在vim中删除列

big*_*ree 3 vim

我想使用vim删除文本文件的第一列。我在使用可视模式的情况下阅读了这些SO答案,但是它们仅删除了第一个字符(至于使用模式的答案,我听不懂,因此我很难适应他们的情况)。

我的文件包含许多数字,我想删除第一列中的数字,而不仅仅是第一个元素。

例如

12 34 43143 1
131234 1 
1 3443 132
Run Code Online (Sandbox Code Playgroud)

我想拥有

34 43143 1
1 
3443 132
Run Code Online (Sandbox Code Playgroud)

但目前,我得到了

2 34 43143 1
31234 1 
 3443 132
Run Code Online (Sandbox Code Playgroud)

如果需要,数字用制表符分隔

Ing*_*kat 5

(整数)数字[0-9]以正则表达式语法表示,您也可以编写\d;因为有很多数字,所以\+附加了量词。一个制表符\t,或者通常是空格\s。现在,您要用/代替:substituteline(^)开头的数字。

:%s/^\d\+\t//
Run Code Online (Sandbox Code Playgroud)

%适用于整个缓冲区,见:help :range

超越

很快,您将要删除其他列;您可以声明某些匹配项(例如^\d\+\t\zs\d\+\t,选择第二列),或使用捕获组(甚至可以对它们进行重新排序!),但是这样会更加乏味。

当您意识到文件格式是众所周知的名称制表符分隔值(一种逗号分隔值(CSV)的变体)时,就会取得突破。有一个很棒的插件(csv.vim-一个用于csv文件的Filetype插件,它有一个:DeleteColumn命令-就是您所需要的!(还有更多...)


Pet*_*ker 5

这是一份工作cut

:%!cut -f 2-
Run Code Online (Sandbox Code Playgroud)