在vim中查找并替换为星号(*)

时间:2019-07-17 09:16:00

标签: vim replace

我有一个文本文件,其中列出了目录中的文件名(以下摘录)。项目名称是f后跟3位数字。

 771M Jan 22 02:35 f186
 1.2G Jan 22 02:35 f172
 771M Jan 22 02:36 f206
 771M Jan 22 02:37 f151
 771M Jan 22 02:37 f029
 1.2G Jan 22 02:38 f162
 771M Jan 22 02:40 f168
 1.2G Jan 22 02:42 f244
...

我想要一个 3位数字的列表。因此,我需要通过“无”替换前面的列。由于前几行的内容对于每一行都是不同的,因此我将使用星号,并且以下方法在VIM中对我来说似乎是合乎逻辑的:

:%s/*f/

我将所有后跟的f都替换为空。

为什么这行不通?如何在VIM中做到这一点?

1 个答案:

答案 0 :(得分:7)

Vim使用正则表达式,在正则表达式中,星号实际上是一个量词。

您想要的是什么

:%s/.*f/

.字符表示任何字符,而*表示任意数量的.。因此,组合.*基本上可以匹配任何您想要的东西。

正则表达式同时是我所学到的最有用和最讨厌的东西,所以我建议您熟悉它们。