当您不在 vim 中插入更多内容并删除某些内容时,它会自动出现在剪贴板中。这个剪贴板像堆栈一样工作吗?
如果剪贴板是一个堆栈,我如何访问此堆栈中的先前条目?如果剪贴板不是堆栈,它是如何工作的?它可以同时保存多个数据条目吗?以及如何访问它们?
我想要的是创建一个宏(记录),以获取此剪贴板堆栈中的第 N 个条目,或者如果它们可以同时保存在内存中,则获取多个数据条目。
当您不在 vim 中插入更多内容并删除某些内容时,它会自动出现在剪贴板中。这个剪贴板像堆栈一样工作吗?
如果剪贴板是一个堆栈,我如何访问此堆栈中的先前条目?如果剪贴板不是堆栈,它是如何工作的?它可以同时保存多个数据条目吗?以及如何访问它们?
我想要的是创建一个宏(记录),以获取此剪贴板堆栈中的第 N 个条目,或者如果它们可以同时保存在内存中,则获取多个数据条目。
我不会说它是一个堆栈。它像堆栈(用于删除)一样工作。
我认为您需要查看“编号寄存器”。
Vim 有 0-9 个编号的寄存器。如果你认为它是一个堆栈,堆栈的大小是9(1-9)用于删除。
抽出的东西存储在寄存器 0 中,并且""
没有堆栈结构。
我说它可以“像堆栈一样”工作,但不能堆栈(用于删除),因为使用堆栈数据结构,您无法随机获取元素。你可以弹出或推送。但是使用 vim 的寄存器,您可以通过"1 "3 "5
例如获取任何 (0-9) 元素,并保持“堆栈”不变。
详细阅读:h registers
。
系统剪贴板(寄存器"+
)不是堆栈,除非您使用外部工具(例如Windows 上的ClipX,或GNOME 上的Glipper)来提供操作系统级别的历史记录。
我认为您的意思是默认的 Vim 寄存器。实际上,删除和更改(至少一整行)被复制到编号的寄存器中。当前删除进入"1
,其内容移入"2
,等等。
详情请参阅:help quote_number
。
与任何其他寄存器一样,您可以通过p
正常模式命令(例如"1p
):put {reg}
、<C-r>{reg}
从插入模式或通过getreg()
或以@{reg}
编程方式访问它们。
有点儿。
Vim 使用寄存器来拉取和删除。
""
除非您明确使用“黑洞寄存器”,否则始终使用未命名的寄存器 。
"0-9
当您在不使用特定寄存器的情况下拉出或删除时,将使用编号寄存器。
确切的机制有点棘手,所以我建议你看看:h registers