假设我在可视模式下选择了一个词。我想使用 s// 对该单词和文件中该单词的所有其他实例执行替换。有没有办法使用s/<here>/stuff/
部分中突出显示的文本而无需重新输入?
问问题
395 次
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 /
在搜索中插入最后一个搜索项并替换字符串。
您可以查看此页面以了解其他类似的技巧:
于 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
,输入您的替换并点击Enter
。 depesz的版本也可以很好地映射(几乎与他输入的完全一样):
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>
于 2009-09-25T20:09:34.847 回答