在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 nextrepeat substitute ,等等。

这是一个巨大的替代痛苦,但它可以让你有select地忽略一些旧的事件(通过再次按nfind下一个,而不是重复一个替代)。

如果您的replace文本需要更改每个匹配的事件(即不是简单地select是/否应用单一replace),您可以使用我称为交互replace的Vim插件。