删除VIM中的最后一列

时间:2013-10-14 05:31:19

标签: vim edit

在VIM中,我如何删除txt文件的最后一列。

1 2 3 4
x x x x
x x x x

我想删除第4列

Result:
1 2 3
x x x
x x x

谢谢

5 个答案:

答案 0 :(得分:5)

尝试这一行(使用%作为选择,作为移动命令......):

s/ [^ ]*$//

说明:正则表达式匹配从行尾到最后一个分隔符的所有内容,并丢弃它。

答案 1 :(得分:2)

我认为垂直视觉选择也非常方便。

gg$<C-v>h3jx

您可以通过这种方式轻松删除任何列。

答案 2 :(得分:2)

另一个选项是使用垂直选择[Shift + V]最后一列然后删除它。

答案 3 :(得分:0)

如果要计算整个缓冲区,请使用thriqon提到的正则表达式

:%s/ [^ ]*$//

通过在vim

中运行外部命令也可以获得相同的结果
:%! cut -d' ' -f1-3

答案 4 :(得分:0)

您可以使用宏来删除最后一列,然后将其应用于整个文件。

因此转到第一行非标题行,然后运行

qa$bld$^q

这将开始在寄存器a中记录一个动作,该动作将到达行尾,然后返回一个单词,右移一个字符直到空格,然后删除直到行尾。

现在撤消使用u进行的更改。

现在使用该宏将其应用于整个文件

:%normal @a

这对于删除csv文件中的特定行非常方便。

例如,删除csv的最后一行

qa$F,d$^q
:%normal @a

或者删除倒数第二行

qa$2F,dt,^q
:%normal @a

请参阅:help :normal:help @:help q:help :%以供参考。