在Vim中,有没有办法在搜索行中粘贴文本?

时间:2008-09-19 11:47:55

标签: vim

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

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

7 个答案:

答案 0 :(得分:120)

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

:he cmdline-editing

了解更多信息。

答案 1 :(得分:49)

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

答案 2 :(得分:14)

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

答案 3 :(得分:11)

复制:
1)v(或在视觉模式下用鼠标突出显示)
2)y(yank)

粘贴:
1)/(搜索模式)
2)Ctrl + R + 0(从被拽的寄存器粘贴)

答案 4 :(得分:3)

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

s/foo/bar/gci

使用"ayy将其复制到指定的寄存器(如果光标在该行上!)。

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

:[OPTIONAL_RANGE]@a

我一直都在使用它。

答案 5 :(得分:2)

通常情况下,您可以选择鼠标(选择 Ctrl Ins Ctrl C )然后,在命令/搜索行中,中键单击(或 Shift Ins Ctrl V

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

"add@a

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

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

最后,您可以输入q:以在文本缓冲区中输入历史记录。

答案 6 :(得分:0)

您可以将光标放在要添加到图案上的单词上,然后按 / 进入搜索或命令模式,然后按 Ctrl R Ctrl W 复制该单词。 Source