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