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

our*_*nos 3 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
...
Run Code Online (Sandbox Code Playgroud)

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

:%s/*f/
Run Code Online (Sandbox Code Playgroud)

在这里,我将所有内容替换为f,然后将其替换为空。

为什么不起作用?我该如何在VIM中做到这一点?

Kai*_*aiJ 7

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

您想要的是:

:%s/.*f/
Run Code Online (Sandbox Code Playgroud)

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

正则表达式同时是我所学过的最有用和最烦人的东西,因此我建议您熟悉它们。