1

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()
4

2 に答える 2