在vim中以制表符分隔的文本文件中重新排列列的最佳方法是什么?

时间:2010-06-25 15:11:47

标签: vim

我已经知道如何使用

:%s/\(\S\+\)^I\(\S\+\)/\2^I\1/

但我觉得我正在输入很多东西。有更干净,更快捷的方法吗?

2 个答案:

答案 0 :(得分:5)

如果列排成一行,您可以通过按Ctrl + V使用视觉块模式,然后剪切和粘贴。如果列未排列,请先增加标签宽度,使其长于相关列的内容。

答案 1 :(得分:4)

在VIM中实现这一目标的最佳方式是 - 不要使用VIM并且(重新)使用现有工具来完成工作。 * NIX特定解决方案:

:%!awk -F \\t '{print $2 FS $1}'

将制表符分隔文件的内容传递给awk,它将打印前两个交换的列,由字段分隔符(FS)分隔。 Windows也可以找到awk

P.S。最初我想用cut编写相同的内容,但无论出于何种原因,cut -f 2,1(由于TAB是默认分隔符,不需要-d)以相同的顺序打印字段,而不是交换: |