我注意到我可以在vim中使用正则表达式函数进行搜索,而在setting incsearch输入时我可以看到hilights。但这对于搜索和替换这样的查询并不起作用:
:%s/std::regex\s\([_a-zA-Z]*\)(/regex_t \1 = dregc(/gc
当它确实奏效时,那个让我感到惊讶。
是否有vim的设置或插件,如incsearch,但更好的是,会在您键入时突出显示替换查询?只是突出显示匹配将是非常整洁,但将新旧字符串放在彼此旁边的不同突出显示颜色将是一个天赐之物,因为我可能不确定反向引用。
答案 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
)。