1

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

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

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

4

3 回答 3

2

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

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

Vim 有 0-9 个编号的寄存器。如果你认为它是一个堆栈,堆栈的大小是9(1-9)用于删除。

抽出的东西存储在寄存器 0 中,并且""没有堆栈结构。

我说它可以“像堆栈一样”工作,但不能堆栈(用于删除),因为使用堆栈数据结构,您无法随机获取元素。你可以弹出或推送。但是使用 vim 的寄存器,您可以通过"1 "3 "5例如获取任何 (0-9) 元素,并保持“堆栈”不变。

详细阅读:h registers

于 2013-07-03T13:41:33.657 回答
1

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

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

详情请参阅:help quote_number

与任何其他寄存器一样,您可以通过p正常模式命令(例如"1p:put {reg}<C-r>{reg}从插入模式或通过getreg()或以@{reg}编程方式访问它们。

于 2013-07-03T13:41:53.250 回答
1

有点儿。

Vim 使用寄存器来拉取和删除。

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

  • "0-9当您在不使用特定寄存器的情况下拉出或删除时,将使用编号寄存器。

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

于 2013-07-03T13:47:17.547 回答