2

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

./run -f abc.txt
./run -f abc1.txt
./run -f abc2.txt
..
..
./run -f abc50.txt

我需要全部替换abc*.txtabc.txt. 在 Vim 中有没有办法可以做到这一点,我可以在其中搜索所有内容abc*.txt并替换它们?

4

3 回答 3

5

你可以这样做:

:%s/abc\d*.txt/abc.txt/g
于 2012-07-02T04:30:10.757 回答
2

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

:%g/abc/norm!fclvf.hx

当我们使用时,%g我们将命令应用于与第一个参数匹配的所有行(在这种情况下abc,这意味着所有行abc)。norm!命令的意思是像普通模式下的命令一样 意味着fc找到字母cl意味着向左移动,v启动视觉模式,f.找到点,h向右移动,最后x删除可视化的单词。

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

于 2012-07-02T05:06:06.110 回答
1

简而言之,尝试类似:(可能需要轻微按摩)%s/abc\d*\.txt/abc\.txt/g

查看此页面了解更多信息。

http://vim.wikia.com/wiki/Search_and_replace

:%s/foo/bar/g
Find each occurrence of 'foo', and replace it with 'bar'.
:%s/foo/bar/gc
Change each 'foo' to 'bar', but ask for confirmation first.
:%s/\<foo\>/bar/gc
Change only whole words exactly matching 'foo' to 'bar'; ask for confirmation.
:%s/foo/bar/gci
Change each 'foo' (case insensitive) to 'bar'; ask for confirmation.
This may be wanted after using :set noignorecase to make searches case sensitive (the default).
于 2012-07-02T04:30:55.150 回答