我知道全局替换的正则表达式,
%s/old/new/g
如何在Vim中进行交互式搜索-替换?
我知道全局替换的正则表达式,
%s/old/new/g
如何在Vim中进行交互式搜索-替换?
当前回答
如果您只想计算'abc'出现的次数,那么您可以执行%s/abc//gn。这并不替换任何东西,只是报告'abc'的出现次数。
其他回答
我通常使用find/substitute/next/repeat命令:-)
/old<CR>3snew<ESC>n.n.n.n.n.n.n.
也就是找到“old”,用3个字符替换“new”,找到next,重复替换,等等。
对于大量的替换来说,这是一个痛苦的过程,但它可以让你选择性地忽略一些旧的出现(通过再次按n来查找下一个而不是。重复替换)。
在vim命令提示符中添加标志c:
:%s/old/new/gc
每次出现'old'时,都会给出一个yes/no提示。
Vim的内置帮助提供了在选择了带有确认的替换后可用的选项的有用信息。使用:
:h :s
然后滚动到确认选项部分。截图:
例如,要替换此匹配项和所有剩余匹配项,请使用。
Mark Biek指出:
%s/old/new/gc
对于全局搜索,将每个替换替换为确认。但是,我也喜欢交互式地验证旧文本将正确匹配。我首先用正则表达式进行搜索,然后重用该模式:
/old.pattern.to.match
%s//replacement/gc
s//将使用最后一个搜索模式。
我认为你在找c,例如s/abc/123/gc,这会导致VIM确认替换。参见:help:代替更多信息。
如果您只想计算'abc'出现的次数,那么您可以执行%s/abc//gn。这并不替换任何东西,只是报告'abc'的出现次数。