Vim替换期间的正则表达式搜索

Vim替换期间的正则表达式搜索,vim,replace,Vim,Replace,我的脚本中有许多行看起来像: /run-f abc.txt /运行-f abc1.txt /运行-f abc2.txt .. .. /运行-f abc50.txt 我需要将所有的abc*.txt替换为abc.txt。在Vim中是否有一种方法可以做到这一点,即搜索所有的abc*.txt并替换它们?您可以执行以下操作: :%s/abc\d*.txt/abc.txt/g 简言之,尝试以下方法:(可能需要轻微按摩)%s/abc\d*\.txt/abc\.txt/g 查看此页面了解更多信息 :%s/

我的脚本中有许多行看起来像:

/run-f abc.txt
/运行-f abc1.txt
/运行-f abc2.txt
..
..
/运行-f abc50.txt
我需要将所有的
abc*.txt
替换为
abc.txt
。在Vim中是否有一种方法可以做到这一点,即搜索所有的
abc*.txt
并替换它们?

您可以执行以下操作:

:%s/abc\d*.txt/abc.txt/g

简言之,尝试以下方法:(可能需要轻微按摩)
%s/abc\d*\.txt/abc\.txt/g

查看此页面了解更多信息

:%s/foo/bar/g
查找每个出现的“foo”,并将其替换为“bar”。
:%s/foo/bar/gc
将每个“foo”更改为“bar”,但首先要求确认。
:%s/\/bar/gc
仅将与“foo”完全匹配的整词更改为“bar”;请求确认。
:%s/foo/bar/gci
将每个“foo”(不区分大小写)更改为“bar”;请求确认。
使用:set noignorecase使搜索区分大小写(默认设置)后,可能需要这样做。

我将以多样性的名义添加这种不同的方法,但我认为标准且最简单的方法是@xdazz方法

:%g/abc/norm!fclvf.hx
当我们使用
%g
时,我们将命令应用于与第一个参数匹配的所有行(在本例中为
abc
,这意味着所有行上都有
abc
)。
规范命令意味着在正常模式下执行命令
fc
意味着查找字母
c
l
意味着向左移动,
v
启动可视模式,
f.
查找点,
h
向右移动,最后
x
删除可视单词


这种方法的好处在于,您可以将复杂的宏应用于选定的行。

@ZnArK您可以试试。
:%g/abc/norm!fclvf.hx