在Vim中交互式搜索/替换正则表达式?

eimct9ow  于 2023-08-05  发布在  其他
关注(0)|答案(7)|浏览(90)

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

%s/old/new/g

字符串
如何在Vim中进行交互式搜索替换?

flvtvl50

flvtvl501#

添加标志c(在vim命令提示符下):

:%s/old/new/gc

字符串
在每次出现'old'时,都会给予您一个是/否提示。
x1c 0d1x的数据
Vim的内置帮助提供了有关选择确认替换后可用选项的有用信息。用途:

:h :s


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



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

vof42yt1

vof42yt12#

Mark Biek指出:

%s/old/new/gc

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

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


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

qni6mghb

qni6mghb3#

我想你正在寻找c,例如s/abc/123/gc,这将导致VIM确认更换。更多信息请参见:help:substitute。

j2cgzkjk

j2cgzkjk4#

我通常使用find/substitute/next/repeat命令:-)

/old<CR>3snew<ESC>n.n.n.n.n.n.n.

字符串
find "old"substitute 3 characters for "new"find nextrepeat substitute等等。
大量替换是一个痛苦,但它可以让你选择性地忽略一些旧的出现(只需再次按n来查找下一个,而不是.来重复替换)。

mbyulnm0

mbyulnm05#

如果你只是想计算'abc'出现的次数,那么你可以执行%s/abc//gn。这不会替换任何东西,只是报告'abc'出现的次数。

sshcrbum

sshcrbum6#

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

2fjabf4q

2fjabf4q7#

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

  • set inccommand=split在拆分窗格中预览替换
  • set inccommand=nosplit预览活动缓冲区中的替换


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

相关问题