我想在寄存器中划一条线:"{register}y
但是不要覆盖寄存器中先前的内容.我经常需要在寄存器中复制非连续的行,我有时会像堆栈一样使用寄存器.
例:
line1 line2 line3
我想复制line1
,通过把光标放在它并输入"ay
,然后事情line3
做"ay
.然后,当我会做"ap
,既line1
和line3
将被粘贴.
这可能没有插件吗?有插件吗?
如果要附加到命名寄存器,请使用相应的大写字符.即在你的例子中:
"ayy "Ayy "ap
只是为了扩展MarkB的响应,你知道你也可以使用标记为你的猛拉选择一个文本块吗?
转到要拉出的块的第一行,并在选择一个字母作为标记后输入标记命令,例如
ma (entered in command mode, i.e. no colon)
然后转到要阻塞的块的底部并输入命令:
:'a,.ya A
这个命令意味着从包含我的标记的行中取出文本块,称为一个直到当前行并将其拉入缓冲区a.与MarkB提到的规则相同,使用小写缓冲区名称来覆盖缓冲区.使用大写缓冲区名称附加到缓冲区.所以在这种情况下,这将附加到缓冲区a的内容.
注意用于标记的"a"与用于选择注册的"a"无关.(AFAIK但是YMMV)
BTW'a(撇号a)是指含有标记a的线.`a(反引号a)是指输入ma时光标下的字符.
`ad`b (also entered in command mode)
是有用的,因为它会删除标记为标记的字符之间的文本,直到您用标记b标记的字符之前的字符.