Vim:替换查询的Incsearch

时间:2014-10-19 08:52:49

标签: regex vim

我注意到我可以在vim中使用正则表达式函数进行搜索,而在setting incsearch输入时我可以看到hilights。但这对于搜索和替换这样的查询并不起作用:

:%s/std::regex\s\([_a-zA-Z]*\)(/regex_t \1 = dregc(/gc

当它确实奏效时,那个让我感到惊讶。


是否有vim的设置或插件,如incsearch,但更好的是,会在您键入时突出显示替换查询?只是突出显示匹配将是非常整洁,但将新旧字符串放在彼此旁边的不同突出显示颜色将是一个天赐之物,因为我可能不确定反向引用。

2 个答案:

答案 0 :(得分:6)

不是您问题的直接答案,但传统上在Vim中您首先制作搜索正则表达式,如:

/regex

然后你点击输入来执行它。设置:set hlsearch:set incsearch可让您轻松查看。然后你可以这样做:

:%s//replace

如果未指定搜索,:%s s ubstitute正在 % ,一个意味着文件中所有行的shorctut)将使用您指定的最后一个搜索词。

更进一步,你可以做

:%s/~/replace2

replace1替换您的上一次替换(在本例中为replace2)。

不相关,您可以将它放在.vimrc

set gdefault

默认情况下,所有内容都会替换为全局,因此在每个/g命令后都不需要:%s标记。

答案 1 :(得分:5)

您可能正在寻找vim-over

这是一个插件:(澄清一下,让我们说我们正在做:%s/foo/bar/g。)i)突出显示缓冲区(foo)中的替换匹配项ii)预览替换后的内容(bar)。