在Vim中,是否可以在搜索行中粘贴文本?

时间:2020-03-06 14:25:36  来源:igfitidea点击:

我想搜索$ maximumTotalAllowedAfterFinish并将其替换为$ minimumTotalAllowedAfterFinish。而不是输入长文本:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

有没有办法将这些长变量名复制到搜索行中,因为在命令行上我无法键入"p"来粘贴?

解决方案

输入q:进入新缓冲区的历史记录编辑模式。然后编辑缓冲区的最后一行,然后按Enter键执行。

通常,我们可以通过以下方式进行选择:鼠标选择(选择后可能是Ctrl Ins或者Ctrl C),然后在命令/搜索行中单击鼠标中键(或者Shift Ins或者Ctrl V)。

另一种方法是,将命令/搜索行写到文本缓冲区中,并在文本缓冲区中提供所有可用的编辑,从开始,然后在行上执行所有操作:

"add@a

它将整个命令行存储在缓冲区" a"中,然后执行它。但是,它不会存储在命令历史记录中。

尝试在文本缓冲区中创建以下行,作为上述按键的示例:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

最后,我们可以输入" q:"以在文本缓冲区中输入历史记录编辑。

我们可以通过键入CTRL``R``{0-9a-z"%#:-=。}来插入编号或者命名寄存器的内容。将当前单词粘贴到光标下方。请参阅:

:he cmdline-editing

欲获得更多信息。

照常复制它,然后执行Ctrl + R粘贴。还有很多其他Ctrl + R快捷键(例如,计算器,当前文件名,剪贴板内容)。 CR>`查看完整列表。

或者在vim缓冲区中创建命令,例如在缓冲区中输入:

s/foo/bar/gci

然后将其复制到带有" ayy"的命名寄存器中(如果光标在该行上!)。

现在,我们可以使用以下命令从Vim的Ex命令行执行"`a"寄存器的内容:

:[OPTIONAL_RANGE]@a

我用它所有的时间。