除了将:91,96y a
( y
) 行 91 到 96 拉入寄存器a
( 粘贴"ap
) 之外,还可以将拉出的行附加到寄存器中:
:91,96y A
即寄存器的大写A
导致对寄存器的附加操作a
而不是覆盖。寄存器的大写总是这样工作,例如:let @A=';'
将 a 附加;
到 register a
。
使用加号 (+) 或减号 (-) 参考相对于当前光标位置的行:
:-10,+10y b
即它会在当前光标位置周围 yank( y
) 21 行并将它们放入 register b
。
没有输入实际上也表示当前光标位置,这意味着:
:-5,y a
将文本从上面的 5 行拉到当前光标位置到命名的缓冲区a
中,并且:
:,+5y a
会将当前光标位置之后的 5 行拉到 buffera
中。
注意:如果缓冲区中有一个宏,a
它只是被先前的 yank 覆盖,因为 yank 寄存器和宏寄存器实际上是一回事。这就是为什么,巧合的是,您可以粘贴一个宏,对其进行编辑,然后将其拉回到它的寄存器中。我个人使用左手到达的字母表示 yanks,而右手到达的字母表示宏。
移动文本块,如下所示:
:+10,+13m.
这意味着将位于当前光标前面 10 行的四行移动到当前行下方。
附录
我以前混淆ya
了在:91,95ya a
某种程度上与ya{motion}
提供运动的位置同义91,95
。这是不正确的,“a”ya
是完全没有必要的。在我的辩护中,我help yank
并没有传达.ya
的可能别名yank
。