如何对Vim中的数字和文字列进行排序
如果你有体面的外壳可供选择你的号码,然后运行命令
:'<,'>!sort -n -k 2
如果你要去型这在可视化模式,键入冒号后,标志“<”>将自动appead,和你只需要输入其余的内容。
这种类型的命令(:[motion]!)被称为筛选。您可以通过查阅vim的帮助人们了解更多:
:h filter
哇,vim有内部的排序程序!那个混蛋有多大? – 2009-08-30 22:01:07
在vim 6.0中没有排序命令:( – vehomzzz 2009-08-30 22:05:52
任何你无法升级的原因vim.org确实说7.2是最新的稳定版 – 2009-08-30 22:09:47
对于vim7我会去:
:sort n /.*\s/
这会忽略的数字给出的正则表达式匹配的文本进行排序。在你的情况下,它是第二列。
分类由第二列通过在视觉模式中选择它(例如控制 + v),然后运行:
!sort
或通过第三列进行排序
sort -k 3
或
:sort /.*\%3v/
或者使用Shift + V命令选择要排序的行。然后输入
!sort -k 3n
,或者使用下面的代码来告诉Vim跳过前两个单词中的每一行和排序任何如下:
:%sort /^\S\+\s\+\S\+\s\+/
或即排序8号线:
:sort /.*\%55v/
“虚拟”规范是列的绝对数量,它将空格+制表符视为单个字符(简言之,它不会将制表符计为八个空格),
所以通过最后一列进行排序:
:%sort /\<\S\+\>$/ r
这应该是答案。 'sort!'也很好。 – firedev 2014-10-29 12:29:15
相关,如果你的第二个(或第三,第四......)列碰巧是第一个带有十进制数的列,请注意,您可以简单地使用':sort n',如帮助所示:“使用[n] ...排序在行中的第一个十进制数上完成。 ..“这不适用于你的情况,但可能对某些人来说。 – Rabarberski 2012-11-16 14:42:20