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

问题描述:

我想搜索$maximumTotalAllowedAfterFinish并将其替换为$minimumTotalAllowedAfterFinish。而不是输入长文本:在Vim中,有没有办法在搜索行中粘贴文本?

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g 

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

+2

我想,tou还需要转义第一个`$`,因为这个caracter意味着行结束。 – 2011-09-19 20:28:10

+1

@LucM OP还可以在搜索模式中的任意位置使用'\ V`来禁用“魔术”字符。 – 2012-11-06 01:37:14

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

:he cmdline-editing 

了解更多信息。

+5

感谢您的回答,对我来说最常见的一个是:`CTRL` +`R`` +`(因为它代表剪贴板内容) – 2013-10-09 10:27:49

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

+1

所以这就是缓冲区的原因!谢谢(我总是在输入时偶然发现它:q并且感到困惑) – gsk 2013-10-22 18:04:30

+1

`q /`也可用于访问搜索历史记录并粘贴新搜索。 – 79E09796 2015-01-20 15:36:37

通常,可以做到这一点与鼠标选择(也许Ctrl键Ctrl键Ç选择之后),然后,当在命令/搜索线,中间键(或移位InsCtrlV)。

另一种方式,是写在文本缓冲区的命令/搜索符合在文本缓冲区提供所有的编辑,从:和所有的话,就行了,这样做:

"[email protected] 

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

尝试在文本中创建缓冲区以下行如对上述按键的例子:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g 

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

+0

+1为提及鼠标 – 2008-11-10 12:48:14

复制它作为正常的,然后做按Ctrl[R贴。还有很多其他按Ctrl的R快捷方式(例如,计算器,当前文件名,剪贴板中的内容)。输入:help c_<C-R>要查看完整列表

或者在Vim缓冲区创建命令,如在缓冲区键入:

s/foo/bar/gci 

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

:[OPTIONAL_RANGE]@a 

我用它所有的时间:现在

您可以执行的“a”的内容从Vim的Ex命令符合注册。

复制:
1)v(或高亮与小鼠,在视觉模式)
2)y(抽出)

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

您可以将光标置于要添加到模式的单词上,然后按/进入任一搜索或命令模式,然后按Ctrl键- [RCtrl键W¯¯复制的字。 Source