用数字排序列表

时间:2012-04-18 09:01:53

标签: list sorting vim numbers numeric

这是列表L

['25', '2', '15', '4', '81', '43'] 

这是我使用命令sort(L)

时的输出
['15', '2', '25', '4', '43', '81'] 

这就是我想要的输出:

['2', '4', '15', '25', '43', '81'] 

是否有命令在列表中按%sort n在命令行中对数字进行排序?

1 个答案:

答案 0 :(得分:3)

documentation对此进行了解释。您需要定义一个函数来进行列表条目之间的比较。如果参数相等,则函数应返回0;如果第一个参数大于第二个参数,则返回1;如果第二个参数大于第一个参数,则返回-1。

function! MyCompare(i1, i2)
    return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
endfunction

然后你可以使用你的新函数作为第二个参数调用sort()。因此:

let list = ['25', '2', '15', '4', '81', '43']
echo sort( list, 'MyCompare' )

将回显

[2, 4, 15, 25, 43, 81]

正如所料。