12

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

4

4 回答 4

17

当然。如果您选择了这个词,只需“y”ank 它,然后输入:

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

用 r 键按 ctrl 键在哪里,“只是”字符。

所有按键:

y:%s/<ctrl-r>"/what to put/g<enter>
于 2009-09-25T15:09:32.303 回答
4

如果您在使用之前搜索了您的文本

CTRL-R /

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

您可以查看此页面以了解其他类似的技巧:

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

于 2009-09-25T14:57:30.460 回答
4

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

:%s/<C-r><C-w>/bar/g
于 2009-09-27T23:31:10.737 回答
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>
于 2009-09-25T20:09:34.847 回答