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

Rob*_*ujo 3 vim

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

123456789
000 123
013 122 
122 013
123 000 
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

123 000 
122 013
013 122 
000 123
123456789
Run Code Online (Sandbox Code Playgroud)

Rob*_*ujo 7

以下vim命令帮助了我:

:sort /\%5v/
Run Code Online (Sandbox Code Playgroud)

说明

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

A.跳过匹配排序

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

文档中的示例:

A1.示例 - 从虚拟列5开始排序 我们的情况 - 对虚拟列5处的文本进行排序(从而忽略制表符和空格之间的差异):

:sort /.*\%5v/
Run Code Online (Sandbox Code Playgroud)

A2.示例 - 对第二个逗号分隔字段进行排序

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

:sort /[^,]*,/
Run Code Online (Sandbox Code Playgroud)

B.仅排序匹配 - 指定的[r]标志

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

:sort /\a\a\a/ r
Run Code Online (Sandbox Code Playgroud)

参考

请检查:help:排序以获取更多详细信息/选项