我有一个看起来像这样的表:
名字姓氏;长度;体重;
我需要按长度排序,如果一个或多个名称的长度相等,我需要按重量对它们进行排序。sort ni
仅按长度排序,我也尝试sort /.\{-}\ze\dd/
过,但这也不起作用。
任何帮助将不胜感激!
这可以非常简单地使用外部(GNU)排序来完成:
!sort -t ';' -k 2,2n -k 3,3n
这表示:按分号拆分字段,按数字排序第二个字段,然后按数字排序第三个字段。可能比您可以编写的任何 vim-internal 命令更容易阅读和记住。
有关 GNU 排序的更多信息:http ://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html
r
用国旗试试。
按长度排序:
:%sort rni /.*;\ze\d/
按重量排序:
:%sort rni /\d+\ze;$/
如果没有这个标志,则对匹配后的内容进行排序,这可能有点麻烦。
使用r
标志,排序是在匹配本身上完成的,这可能更容易定义。在这里,该模式匹配行尾分号之前的一系列 1 个或多个数字。