0

这是列表L

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

这是我使用命令时的输出sort(L)

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

这就是我想要的输出:

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

是否有一个命令可以像%sort n在命令行中那样对列表中的数字进行排序?

4

1 回答 1

3

这在文档中进行了解释。您需要定义一个函数来进行列表条目之间的比较。如果参数相等,函数应该返回 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]

正如预期的那样。

于 2012-04-18T09:43:54.593 回答