在 Vim 中,是否有方法在搜索行中粘贴文本?

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

有没有办法将这些长变量名复制到搜索行中,因为在命令行中我不能键入“ p”粘贴?

33509 次浏览

键入 q:以进入新缓冲区中的历史编辑模式。然后编辑缓冲区的最后一行并按 Enter执行它。

Typically, you would do that with mouse selecting (perhaps CtrlIns or CtrlC after selecting) and then, when in the command/search line, middle-clicking (or ShiftIns or CtrlV).

Another way, is to write your command/search line in the text buffer with all the editing available in text buffers, starting with : and all, then, on the line, do:

"add@a

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

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

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

可以通过键入 CTRLR{0-9a-z"%#:-=.}来插入编号或命名寄存器的内容。通过键入 CTRL-R CTRL-W,您可以将当前单词粘贴到光标下。参见:

:he cmdline-editing

了解更多信息。

正常复制,然后执行 CtrlR"粘贴。还有许多其他的 CtrlR快捷方式(例如,计算器、当前文件名、剪贴板内容)。键入 :help c_<C-R>查看完整列表。

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

s/foo/bar/gci

然后用 "ayy(如果光标在这一行上的话)将它复制到一个指定的寄存器中。

现在,您可以使用以下命令从 Vim 的 Ex 命令行执行“ a”寄存器的内容:

:[OPTIONAL_RANGE]@a

我一直在用。

收到:
1) v(或在视觉模式下用鼠标突出显示)
2) y(yank) < br/>

粘贴:
1) /(搜寻模式)
2) Ctrl + R + 0(从拉寄存器粘贴) < br/>

您可以将光标放在您想要添加到模式中的单词上,然后按 /:进入搜索或命令模式,然后按 CtrlRCtrlW复制单词。来源