如何将行添加到vim寄存器而不覆盖它

我想在一个寄存器中放一行: "{register}y但是不要覆盖之前在寄存器中的内容,我经常需要在寄存器中复制非连续的行,并且我希望有时使用寄存器像一个堆栈。

例:

 line1 line2 line3 

我想复制line1 ,把光标放在上面,然后input"ay ,然后在line3执行"ay 。 那么,我什么时候会做"ap ,那么line1line3就会被粘贴。

这可能没有插件? 与插件?

如果你想附加到一个指定的寄存器使用它相应的大写字符。 即在你的例子中:

 “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标记的字符之前的字符。