示例:
let list = [['aen', '2'], ['ben', '3'], ['Aen', '4'], ['Ben', '5']]
sort(list, 1)
输出:
let list = [['aen', '2'], ['Aen', '4'], ['ben', '3'], ['Ben', '5']]
预期产出:
let list = [['Aen', '4'], ['aen', '2'], ['Ben', '5'], ['ben', '3']]
在python中很容易做到,但似乎无法使用带有vim列表的python sorted()命令。
如何按预期对列表进行排序?
更新
也许解决方案是:
for i in range(0,len(list)-1)
let @b= join(list[i], "|||")
endfor
这会将所有行放入寄存器,但如何对寄存器中的行进行排序?
修改: 在python的帮助下找到 解决方案 (在Vim函数内)
python3 << endpython
import vim
list2 = vim.eval('list')
list3 = sorted(list2, key=lambda v: (v[0].upper(), v[0].islower()))
vim.command("let list= %s"% list3)
endpython
echo list --> [['Aen', '4'], ['aen', '2'], ['Ben', '5'], ['ben', '3']]
答案 0 :(得分:1)
Reman :在python的帮助下找到 解决方案 (在Vim函数中)
sudo rstudio-server status
答案 1 :(得分:0)
sort()
采用可选参数,这是一个函数。定义返回-1,0或1的函数,具体取决于子列表的第一个元素。
请注意,您必须为更改的词法顺序定义函数。
可能相反,您可以使用tr()
对转置版本进行排序,然后在排序后转置回来。
答案 2 :(得分:0)
我想在python中获得你期望的结果,你也必须编写自己的比较函数。在vim中,你可以先impl。比较函数,并将函数ref传递给sort()
函数。
请查看:h sort(
了解详情