我想在寄存器中保留一行:"{register}y
,但不覆盖以前在寄存器中的内容。我经常需要复制寄存器中不相邻的行,有时我喜欢像使用堆栈一样使用寄存器。
示例:
line1
line2
line3
我想复制line1
,方法是将光标放在上面并输入"ay
,然后转到line3
并执行"ay
。然后,当我要执行"ap
时,line1
和line3
都将被粘贴。
如果没有插件,这是可能的吗?有插件吗?
发布于 2008-12-19 20:58:35
只是为了扩展MarkB的响应,你知道你也可以使用标记来为你的yank选择一块文本吗?
选择一个字母作为标记后,转到要拖拽的块的第一行,然后输入标记命令,例如
ma (entered in command mode, i.e. no colon)
然后转到您想要拖拽的块的底部,并输入命令:
:'a,.ya A
此命令意味着从包含我的标记a的行取文本块到当前行,并将其拖入缓冲区a。与前面提到的MarkB规则相同,使用小写的缓冲区名称覆盖缓冲区。使用大写的缓冲区名称附加到缓冲区。因此,在这种情况下,这将附加到缓冲区a的内容中。
注:用于您的标记的'a‘与用于选择您的寄存器的'a’无关。(AFAIK但YMMV)
顺便说一句,'a (撇号a)指的是包含标记a的行。‘a(反引号a)指的是您输入ma时光标下的字符。
d`a (also entered in command mode)
非常有用,因为它将删除标记为a的字符之间的文本,直到光标当前所在的字符之前的字符。
https://stackoverflow.com/questions/380379
复制相似问题