当您不在vim中插入更多内容并删除某些内容时,它会自动进入剪贴板。这个剪贴板是否像堆栈一样工作?
如果剪贴板是堆栈,我如何访问此堆栈中的先前条目? 如果剪贴板不是堆栈,它是如何工作的?它可以同时保存多个数据条目吗?以及如何访问它们?
我想要的是创建一个宏(记录),它获取此剪贴板堆栈中的第N个条目,或者如果它们可以在内存中同时保存,则获取多个数据条目。
答案 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