我想搜索$maximumTotalAllowedAfterFinish
并将其替换为$minimumTotalAllowedAfterFinish
。而不是键入长文本:
:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g
有没有办法将这些长变量名称复制到搜索行,因为在命令行上我无法键入“p
”来粘贴?
答案 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