在VIM中,是否可以在替换子句中使用所选文本而无需重新输入?

时间:2009-09-25 14:34:23

标签: vim substitution

假设我在视觉模式中选择了一个单词。我想使用s //在文件中对该单词和该单词的所有其他实例进行替换。有没有办法在s/<here>/stuff/部分使用突出显示的文本而无需重新输入?

4 个答案:

答案 0 :(得分:17)

不确定。如果您选择了单词,只需“y”ank it,然后键入:

:%s/<ctrl-r>"/something else/g

用r键按住ctrl键,“只是”字符。

所有按键:

y:%s/<ctrl-r>"/what to put/g<enter>

答案 1 :(得分:4)

如果您在使用

之前搜索了文字
  

CTRL-R /

在搜索中插入最后一个搜索项并替换字符串。

您可以在此页面查看其他类似技巧:

http://www.vim.org/htmldoc/insert.html

答案 2 :(得分:4)

您不必掏出单词,将光标放在单词上,然后:

:%s/<C-r><C-w>/bar/g

答案 3 :(得分:0)

从命令行访问寄存器内容的另一种方法是通过@变量。因此,如果您将文本拖入默认寄存器,它将位于名为@"的变量中。

:exe '%s/' . @" . '/stuff/'

这是一个可以轻松输入的映射:

vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>

现在,您可以在视觉模式中突出显示某些内容,输入\s,输入替换内容并点击Enterdepesz的版本也做了很好的映射(几乎与他输入的一样):

vmap <Leader>s y:%s/<c-r>"//g<Left><Left>