0

在 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

谢谢

4

5 回答 5

5

试试这个(用%, 作为选择,作为移动命令......):

s/ [^ ]*$//

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

于 2013-10-14T05:37:37.347 回答
2

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

gg$<C-v>h3jx

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

于 2013-10-14T08:05:38.067 回答
2

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

于 2013-10-14T08:31:47.567 回答
0

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

:%s/ [^ ]*$//

也可以通过在 vim 中运行外部命令来获得相同的结果

:%! cut -d' ' -f1-3
于 2013-10-19T15:10:52.063 回答
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 :%以供参考。

于 2019-05-21T08:29:32.007 回答