🐼
忘れられないQuickfix
quickfixは、かしこくて、いつもみんなにたよりにされています。
こまっている友だちは、だれでも、きっと助けてあげるのです。
- 編集を加速するVimのquickfix機能 - daisuzu's notes
- vimgrepとQuickfix知らないVimmerはちょっとこっち来い - yuku_t@Qiita
- Vim初心者のQuickfixによる検索・置換入門
それに、たいへん年をとっていて、知らないバグはないというぐらい、安定していました。
quickfixは、死ぬことをおそれてはいません。
死んでquickfixがなくなっても、historyはのこることを知っていたからです。
だから、前のように検索結果が消えてなくなっても、くよくよしたりしませんでした。
quickfixって辿れる
getqflist()
関数は、引数でnr
の指定を受けることで過去のquickfixlistを返してくれます。
:let oldest = getqflist({"nr": 1, "title": v:true, "items": v:true})
nr
には最大10
を指定でき、つまり10回分の履歴を遡ることができます。
:let newest = getqflist({"nr": 10, "title": v:true, "items": v:true})
この番号を:chistory
で指定することで、現在のquickfixに表示するリストをその番号で指定したものに変更できます
:3chistory
なので、例えばこんなコマンドを用意しておくと、直近のquickfixの結果をもう一度表示することが簡単にできたりします。
function s:show_qf_titles()
let l:qnr = 1
while qnr <= 10
let l:list = getqflist({"nr": qnr, "title": v:true})
if l:list["nr"] > 0
echo l:qnr .. ": " .. l:list["title"]
endif
let l:qnr = l:qnr + 1
endwhile
endfunction
command! ShowQfTitles call <sid>show_qf_titles()
使うとこんな感じで番号とquickfixのtitleが表示されます。
1: vimgrep foo ./articles/*
2: vimgrep bar ./articles/*
3: make
遡って見たいものを:chistory
で指定し、:copen
で開くことができます。
:1chistory
:copen
ちなみに、telescope.nvimであれば:Telescope quickfixhistory
、ddu.vimであれば拙作のddu-source-quickfix_historyなどを頼るのも良いと思います。
-
これが最古というわけではないです。私の調査力ではURLの貼れる出典をここまでしか遡れなかっただけ。 ↩︎
Discussion
この記事を公開してすぐに
との指摘をいただきました。
これは僕のミスですね。僕もたいていの場合はこの2つで済ませてます。