1
我試圖根據行本身的內容按字母順序自動排序Quickfix列表中的行(默認情況下按它們在文件中出現的順序進行排序)。我把下面的內容放在我的.vimrc文件中,但是由於某些原因,它會根據行號進行排序。據我所知,Quickfix列表是一個字典列表,所以下面的'Sortqfbytext'函數應該只是按每個列表項的'text'內容進行排序,而忽略其餘部分(包括行號)。在Vim中按行文本自動排序Quickfix條目
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()
你是什麼意思的「快速修復列表」?我真的不明白你想要做什麼。 – 2013-03-13 18:47:09
quickfix列表是一個錯誤列表,包含指向它們的位置的鏈接。例如,如果鍵入 :vimgrep/readme /& :copen 它將打開quickfix窗口,並鏈接到當前文件中所有「readme」實例。但是,quickfix窗口本身無法編輯,因爲它會弄亂鏈接。因此,要對其進行排序,您必須創建一個新列表,編輯列表,然後通過調用setqflist(newlisthere)來設置新的quickfix列表。 基本上我想弄清楚如何按照字典中的一個項目(在這種情況下,'文本'項目)按字母順序對字典列表進行排序。 – user2153281 2013-03-13 18:52:58
啊,這與FIX協議的QuickFIX引擎無關,是嗎?今後請注意您的標籤。 – 2013-03-13 19:19:34