我想在寄存器中插入一行:"{register}y
但不覆盖寄存器中以前的内容。我经常需要在寄存器中复制非连续的行,有时我想像堆栈一样使用寄存器。
例:
line1
line2
line3
我要复制line1
,方法是将光标放在其上并输入"ay
,然后继续line3
执行"ay
。然后,当我要执行操作时"ap
,将同时粘贴line1
AND和BOTH line3
。
没有插件,这可能吗?有插件吗?
Answers:
如果要附加到命名寄存器,请使用其对应的大写字符。即在您的示例中:
“好 “好 “ ap
只是为了扩展MarkB的响应,您知道您还可以使用标记来选择要发送的文本吗?
选择要字母的标记后,转到要拉动的块的第一行并输入mark命令,例如
ma (entered in command mode, i.e. no colon)
然后转到您要拉动的块的底部并输入命令:
:'a,.ya A
此命令意味着从包含我的标记的行(称为a)到当前行的文本块,然后将其拖动到缓冲区a中。适用与MarkB相同的规则,使用小写缓冲区名称覆盖缓冲区。使用大写的缓冲区名称来追加到缓冲区。因此,在这种情况下,这将追加到缓冲区a的内容中。
注意:用于标记的“ a”与用于选择寄存器的“ a”无关。(AFAIK但YMMV)
BTW'a(撇号a)是指包含标记a的行。`a(反引号a)是指您输入ma时光标下方的字符。
`ad`b (also entered in command mode)
之所以有用,是因为它将删除标记为a的字符之间的文本,直到删除标记为b的字符之前的字符。