如何从某些列/字符开始在vim中排序

时间:2015-01-07 02:45:50

标签: vim

如何从第5列开始对以下文本进行排序:

123456789
000 123
013 122 
122 013
123 000 

我想得到这个:

123 000 
122 013
013 122 
000 123
123456789

2 个答案:

答案 0 :(得分:6)

以下vim命令帮助了我:

:sort /\%5v/

说明

除了一些简单的选项(比如u,i,!,n),排序可以接收 正则表达式/ {pattern} /。在这种情况下,有两种选择:

一种。按跳过匹配

排序

默认 - 未指定[r]标志 - 在这种情况下,对于每一行,跳过与{pattern}匹配的文本,因此 对匹配后的内容进行排序

文档中的示例:

<强> A1。示例 - 从虚拟列5开始排序 我们的情况 - 对虚拟列5的文本进行排序(因此忽略了制表符和空格之间的区别):

:sort /.*\%5v/

<强> A2。示例 - 对第二个逗号分隔字段进行排序

逻辑是:跳过文本直到找到第一个逗号:

:sort /[^,]*,/

B中。仅匹配 - 指定[r]标志

即。 排序是在 匹配{pattern}而不是如上所述跳过它 ...仅对每行的前三个字母进行排序

:sort /\a\a\a/ r

参考

请查看:help :sort了解更多详情/选项

答案 1 :(得分:0)

...以下也有效,基本上排序第5列

:sort /.*\%5v/