我只知道使用寄存器的一个实例是通过CtrlR*,从中我从剪贴板粘贴文本。

寄存器的其他用途是什么?如何使用它们?

你所知道的关于VI寄存器的一切(让我们关注VI 7.2)——分享给我们。


当前回答

黑洞寄存器_是寄存器中的/dev/null。

我在我的vimrc中使用它来允许删除单个字符而不更新默认寄存器:

noremap x "_x

并且在不更新默认寄存器的情况下以可视模式粘贴:

vnoremap p "_dP

其他回答

当我发现0寄存器时,我很高兴。如果你不将文本分配给特定的寄存器,那么它将被分配给0寄存器,并被保存在默认的“寄存器”中。0寄存器和' '寄存器之间的区别是0只填充被删除的文本,而默认寄存器也填充使用d/ d/ x/ x/ c/ c/ s/ s命令删除的文本。

当我想复制一些文本,删除一些东西并用复制的文本替换它时,我发现这很有用。举例如下:

Yank你想要复制的文本与y[动议]-这个文本保存在“和0寄存器 删除你想用d[动议]替换的文本-此文本保存在“寄存器 用“0p .”粘贴被拉拽的文本

其中“是为下一个命令使用寄存器的命令。

在最后一步,如果您要从默认寄存器粘贴(使用p),它将使用您刚刚删除的文本(可能不是您想要的)。

注意p或p是从默认寄存器中粘贴的。传统的等效方法是""p(或""p)和"0保存最后一次yank, "1保存最后一次删除或更改。

有关更多信息,请参阅:帮助寄存器。

一个被忽视的寄存器是'。'点寄存器,它包含最后插入的文本,无论它是如何插入的,例如ct](更改直到])。然后你意识到你需要将它插入到其他地方,但不能使用点重复方法。

 :reg .
 :%s/fred/<C-R>./

我最喜欢的寄存器是':'寄存器。在正常模式下运行@:可以重复之前运行的ex命令。

所以我们可以用MY_commandXXXXX来验证一些命令,然后把MY_commandXXXXX放在vimrc中

其他有用的寄存器:

“*”或“+ -”系统剪贴板的内容

/ -最后一次搜索命令

:—最后一个命令行命令。

注意,对于vim宏,您可以编辑它们,因为它们只是记录宏时使用的击键列表。因此,您可以将宏写入文本文件(使用“ap”来编写宏a)并编辑它们,并使用“ay$”将它们加载到寄存器中。存储有用宏的好方法。

一个很酷的技巧是使用“1p粘贴最后删除/更改(,然后使用。重复粘贴后续删除的内容。换句话说,“1p…基本上相当于"1p"2p"3p"4p。

你可以用它来倒序一些行: dddddddddd“1 p…