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

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

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


当前回答

我认为秘密的大师寄存器是表达式= register。它可以用于创建映射。

:inoremap  \d The current date <c-r>=system("date")<cr>

您可以将它与您的系统结合使用,或者从自定义VimL函数等获得响应。

或者只是一些特别的东西

<c-r>=35+7<cr>

其他回答

我认为秘密的大师寄存器是表达式= register。它可以用于创建映射。

:inoremap  \d The current date <c-r>=system("date")<cr>

您可以将它与您的系统结合使用,或者从自定义VimL函数等获得响应。

或者只是一些特别的东西

<c-r>=35+7<cr>

其他有用的寄存器:

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

/ -最后一次搜索命令

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

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

在带@的命令中使用寄存器。例如:

echo @a
echo @0
echo @+

让他们来指挥:

let @a = 'abc'

现在ap将粘贴abc。

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

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

如果你想在ex-mode命令中粘贴寄存器的内容,点击<C-r><寄存器字母>。

你为什么要用这个?我想对一个较长的字符串进行搜索和替换,所以我在可视模式下选择了它,开始输入搜索/替换表达式:%s/[PASTE YANKED PHRASE]//g,然后继续我的一天。

如果你只想在ex模式下粘贴一个单词,可以在进入ex模式前确保光标在它上面,然后在ex模式下点击<C-r><C-w>来粘贴单词。

为了更方便:

cnoremap <c-g> <c-r>"
cnoremap <C-Right> <c-r><c-w>