我知道全局替换的正则表达式,

     %s/old/new/g

如何在Vim中进行交互式搜索-替换?


当前回答

Neovim现在有一个功能inccommand,允许你预览替换:

Inccommand有两个选项:

Set inccommand=split预览分隔窗格中的替换 设置inccommand=nosplit预览活动缓冲区中的替换

图片来自:https://medium.com/@eric.burel/stop-using-open-source-5cb19baca44d 该功能的文档:https://neovim.io/doc/user/options.html#'inccommand'

其他回答

Neovim现在有一个功能inccommand,允许你预览替换:

Inccommand有两个选项:

Set inccommand=split预览分隔窗格中的替换 设置inccommand=nosplit预览活动缓冲区中的替换

图片来自:https://medium.com/@eric.burel/stop-using-open-source-5cb19baca44d 该功能的文档:https://neovim.io/doc/user/options.html#'inccommand'

在vim命令提示符中添加标志c:

:%s/old/new/gc

每次出现'old'时,都会给出一个yes/no提示。

Vim的内置帮助提供了在选择了带有确认的替换后可用的选项的有用信息。使用:

:h :s

然后滚动到确认选项部分。截图:

例如,要替换此匹配项和所有剩余匹配项,请使用。

我认为你在找c,例如s/abc/123/gc,这会导致VIM确认替换。参见:help:代替更多信息。

如果你的替换文本需要为每个匹配的事件而改变(即不是简单地选择Yes/No来应用一个单数替换),你可以使用我做的Vim插件interactive-replace。

Mark Biek指出:

%s/old/new/gc

对于全局搜索,将每个替换替换为确认。但是,我也喜欢交互式地验证旧文本将正确匹配。我首先用正则表达式进行搜索,然后重用该模式:

/old.pattern.to.match
%s//replacement/gc

s//将使用最后一个搜索模式。