vim剪贴板是堆栈吗?如果是,我如何从该堆栈中粘贴复制的数据?

时间:2013-07-03 13:22:39

标签: vim macros clipboard vim-registers

当您不在vim中插入更多内容并删除某些内容时,它会自动进入剪贴板。这个剪贴板是否像堆栈一样工作?

如果剪贴板是堆栈,我如何访问此堆栈中的先前条目? 如果剪贴板不是堆栈,它是如何工作的?它可以同时保存多个数据条目吗?以及如何访问它们?

我想要的是创建一个宏(记录),它获取此剪贴板堆栈中的第N个条目,或者如果它们可以在内存中同时保存,则获取多个数据条目。

3 个答案:

答案 0 :(得分:2)

我不会说这是一个堆栈。它就像堆栈一样(用于删除)。

我认为你需要看看“编号寄存器”。

Vim有0-9个编号的寄存器。如果您将其视为堆栈,则堆栈的大小为9(1-9)以进行删除。

Yanked事物存储在寄存器0和""中,没有堆栈结构。

我说它的工作原理是“ stack like ”而不是堆栈(用于删除),因为对于堆栈数据结构,你无法随机获取元素。你可以弹出或推动。但是使用vim的寄存器,你可以通过"1 "3 "5得到任何(0-9)元素,并保持“堆栈”而不改变。

请阅读:h registers了解详细信息。

答案 1 :(得分:1)

系统剪贴板(注册"+)不是堆栈,除非您使用外部工具(例如Windows上的 ClipX 或GNOME上的 Glipper )提供操作系统级别的历史记录。

我认为你的意思是默认的Vim寄存器。实际上,删除和更改(至少整行)将被复制到编号的寄存器。当前删除进入"1,其内容移至"2等等。

有关详细信息,请参阅:help quote_number

与任何其他注册表一样,您可以通过p普通模式命令(例如"1p),:put {reg}<C-r>{reg}从插入模式或通过{{ 1}}或getreg()以编程方式。

答案 2 :(得分:1)

有点。

Vim使用寄存器进行yanking和删除。

  • 除非您明确使用“黑洞记录器”,否则始终使用未命名的寄存器""

  • 编号寄存器"0-9用于在不使用特定寄存器的情况下抽屉或删除。

确切的机制有点棘手所以我建议你看看:h registers