在Vim中交互search/replace正则expression式?
我知道做全球替代的正则expression式,
%s/old/new/g
你如何在Vim中进行交互式searchreplace?
添加标志c (在vim命令提示符下):
:%s/old/new/gc
会在每次“老”时给你一个是/否的提示。
马克·比克指出:
%s/old/new/gc
对于全局searchreplace为每个replace的确认。 但是,我也喜欢互动地validation旧文本将正确匹配。 我首先用正则expression式进行search,然后重用这个模式:
/old.pattern.to.match %s//replacement/gc
s//
将使用最后的search模式。
我认为你正在寻找c
,例如s/abc/123/gc
,这将导致VIM确认replace。 请参阅:帮助:替代更多信息。
如果你只想计算'abc'的出现次数,那么你可以做%s/abc//gn
。 这并不代替任何东西,只是报告“abc”的出现次数。
我通常使用find / substitute / next / repeat命令:-)
/old<CR>3snew<ESC>nnnnnnn
find "old"
, substitute 3 characters for "new"
, find next
, repeat substitute
,等等。
这是一个巨大的替代痛苦,但它可以让你有select地忽略一些旧的事件(通过再次按n
find下一个,而不是重复一个替代)。
如果您的replace文本需要更改每个匹配的事件(即不是简单地select是/否应用单一replace),您可以使用我称为交互replace的Vim插件。