如何将行添加到vim寄存器而不覆盖它
我想在一个寄存器中放一行: "{register}y
但是不要覆盖之前在寄存器中的内容,我经常需要在寄存器中复制非连续的行,并且我希望有时使用寄存器像一个堆栈。
例:
line1 line2 line3
我想复制line1
,把光标放在上面,然后input"ay
,然后在line3
执行"ay
。 那么,我什么时候会做"ap
,那么line1
和line3
就会被粘贴。
这可能没有插件? 与插件?
如果你想附加到一个指定的寄存器使用它相应的大写字符。 即在你的例子中:
“AYY “AYY “AP
只是为了扩大MarkB的回应,你知道你也可以使用标记来为你的抽签select一个文本块吗?
select一个字母作为标记后,转到想要抽出的块的第一行并input标记命令,例如
ma (entered in command mode, ie no colon)
然后转到您要抽出的块的底部并input命令:
:'a,.ya A
这个命令意味着从包含我的标记的行中取出文本块,直到当前行,并将其放入缓冲区a中。 与MarkB提到的规则相同,使用小写缓冲区名称来覆盖缓冲区。 使用大写缓冲区名称追加到缓冲区。 所以在这种情况下,这将附加到缓冲区a的内容。
注意用于标记的“a”与用于select注册的“a”无关。 (AFAIK但YMMV)
BTW'a(撇号a)是指包含标记a的行。 a(反引号a)是指当你inputma时光标下的字符。
`ad`b (also entered in command mode)
是非常有用的,因为它会删除用标记a标记的字符之间的文本,直到用标记b标记的字符之前的字符。