每行第一个单词加双引号

Pus*_*hpa 2 vim r

我有一个 R 文件的结果,如下所示:

filename totalvar result runtime
file1  100 0 20.45
file2  400 4 4.50  
...
filen  200 1 2.00
Run Code Online (Sandbox Code Playgroud)

某些文件名包含奇怪的字符,因此我必须为其添加引号。使用 VIM 为每行的第一个单词添加引号的最简单方法是什么?就像是

filename totalvar result runtime
"file1"  100 0 20.45
"file2"  400 4 4.50  
...
"filen"  200 1 2.00
Run Code Online (Sandbox Code Playgroud)

fil*_*den 8

使用:substitute命令并通过一系列非空白字符匹配第一个单词:

:2,$s/\S\+/"&"/
Run Code Online (Sandbox Code Playgroud)

2,$执行替换开始第2行,并通过文件的末尾去。

\S\+非空格字符序列匹配。它将匹配最左边的一个和可能的最长的一个,对应于每行中的第一个单词。

&关于更换侧代替了比赛本身,所以"&"将围绕着它在双引号。


更新:您可以通过匹配前面的k-1个单词来概括这一点,以引用该行上的第k个单词。

例如,引用第四个单词:

:%s/\(\S\+\s\+\)\{3}\zs\S\+/"&"/
Run Code Online (Sandbox Code Playgroud)

这里\(...\)定义了一组非空白,后跟空白,\{3}匹配 3 和\zs标记实际匹配的开始,所以只有那部分将被替换。

最终效果是您引用了包含 4 个或更多单词的行的第 4 个单词。