Vim:替换查询的Incsearch

Sim*_*eek 2 regex vim

我注意到我可以在vim中使用正则表达式函数和搜索,我可以通过设置incsearch来查看hilights .但这不适合搜索和替换像这样的查询:

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

当它真正起作用时,那个让我感到惊讶.


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

And*_*Ray 6

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

/regex

然后你点击enter执行它.设置:set hlsearch:set incsearch使其易于在视觉上看到.然后你可以这样做:

:%s//replace

由于没有指定的搜索,:%s(小号作用于ubstitute %,一个shorctut这意味着文件中的所有行)将使用您指定的最后一个搜索词.

更进一步,你可以做到

:%s/~/replace2

这取代了你的最后一次替换(在这种情况下replace1)replace2.

不相关的,将它放入您的内容可能对您有用.vimrc:

set gdefault

默认情况下,这将使全部替换为全局,因此您不需要/g在每个:%s命令之后使用该标志.

  • 确实,这不是我问题的直接答案,但我不知道 `:%s/~/replace2` 或 `gdefault`,所以它很有帮助。 (2认同)

Yos*_*osh 5

你可能在寻找vim-over

这是一个插件:(澄清,假设我们正在做:%s/foo/bar/g.)i)突出显示缓冲区中的替换匹配(foo)和可选的ii)预览替换后的内容(bar).