除了将: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。