【问题标题】:Sort List with Numbers用数字排序列表
【发布时间】:2012-04-18 09:01:53
【问题描述】:

这是列表L

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

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

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

这是我想要的输出:

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

有没有像%sort n 在命令行中那样对列表中的数字进行排序的命令?

【问题讨论】:

    标签: list sorting vim numbers numeric


    【解决方案1】:

    这在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]
    

    正如预期的那样。

    【讨论】:

    • 炖牛肉王子,在h: sort() 中从未理解过这一点。顺便说一句,我在 menu.vim 的另一个函数中使用了这个函数。 function! <sid>MyCompare ... endfunction。当我调用此函数时:let s:mylist = sort(s:mylist, '<SID>MyCompare') 它找不到该函数。没有 也没有。我做错了什么?
    • 找到了解决方案!文档中的其他功能工作正常。 Tnx。
    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多