是否可以搜索文件中特定单词的出现次数,并询问用户输入以将该单词替换为其他内容。重复相同的步骤,无论是键入新的替换还是使用历史记录中的某个内容,直到所有单词都被替换或用户退出。请记住,我希望有选择地跳过我不想替换的单词。
只使用
:%s/value_one/value_two/gc
这意味着我需要为每个想要替换的不同变量执行该命令。这种工作流是否可行?在粘贴只需要更改一个变量的样板代码时,我会使用它。
是否可以搜索文件中特定单词的出现次数,并询问用户输入以将该单词替换为其他内容。重复相同的步骤,无论是键入新的替换还是使用历史记录中的某个内容,直到所有单词都被替换或用户退出。请记住,我希望有选择地跳过我不想替换的单词。
只使用
:%s/value_one/value_two/gc
你正在寻找:
%s/value_one/\=input('replace <'.submatch(0).'> with: ')/gc
:h :s\=
和:h input()
。如果需要,您应该能够为input提供一个默认值。
这可能不是最完美的方法,只是分享我所使用的方法。
假设已经设置了:set hl
。按下*
将搜索光标下的单词。把光标移到你要修改的单词上。但我通常使用gd
而不是*
。
然后,使用ciw
更改为替换词。然后按Esc
。我们现在可以通过n
查找下一个出现的单词。
如果需要将其更改为相同的单词,则按下.
即可实现。
否则,您可以再次使用ciw
更改为新值。
如果您不打算更改下一个出现的单词,只需按n
跳过它,即可到达下一个出现的单词。
这看起来有点繁琐,但这可以对我的编辑进行保守控制。
gn
动作。例如,使用 cgn
然后 .
来重复(不要使用 n
!)。更多帮助请参见 :h gn
和这个 Vimcasts 节目:使用 gn 操作搜索匹配项。 - Peter Rincker