如何从一些 column/character 开始在 vim 中排序

How to sort in vim starting from some column/character

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

123456789
000 123
013 122 
122 013
123 000 

我想要这个:

123 000 
122 013
013 122 
000 123
123456789

以下 vim 命令帮助了我:

:sort /\%5v/

说明

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

一个。跳过 matched

排序

默认 - 没有指定 [r] 标志 - 在这种情况下,每一行都会跳过与 {pattern} 匹配的文本,所以 对匹配后的内容进行排序

文档中的示例:

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

:sort /.*\%5v/

A2。示例 - 按第二个逗号分隔字段排序

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

:sort /[^,]*,/

乙。仅对匹配项进行排序 - 指定了 [r] 标志

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

:sort /\a\a\a/ r

参考

请查看:help :sort了解更多details/options

...以下也有效,它基本上对第 5 列进行排序

:sort /.*\%5v/