Quickfix リストの行を、行自体の内容によってアルファベット順に自動的に並べ替えようとしています (デフォルトでは、ファイルに表示される順序で並べ替えます)。私は以下を my に入れました.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()