在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
谢谢
答案 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 :%
以供参考。