我正在尝试按行本身的内容按字母顺序自动对 Quickfix 列表中的行进行排序(默认情况下,它按它们在文件中出现的顺序排序)。我已将以下内容放在我的 中.vimrc
,但出于某种原因,它会根据行号进行排序。据我所知,Quickfix 列表是一个字典列表,所以Sortqfbytext
下面的函数应该只按text
每个列表项的内容排序,而忽略其余的(包括行号)。
function! s:Sortqfbytext(i1, i2)
let textlist = []
let textlist = [a:i1.text,a:i2.text]
call sort(textlist)
if textlist[0] == textlist[1]
return 0
elseif textlist[0] == a:i1.text
return 1
elseif textlist[0] == a:i2.text
return -1
endif
endfunction
function! s:Makesortedqflist()
let xlist = sort(getqflist(), 's:Sortqfbytext')
call setqflist(xlist)
endfunction
autocmd! QuickfixCmdPost * call s:Makesortedqflist()