如何从一些 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/
如何从第 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/