qfscope.nvimでtelescope.nvimの検索結果を絞り込む

by
カテゴリ:

この記事は、Vim駅伝の2024年11月11日の記事です。 11月8日の記事はmichirakaraさんのNeovim で音楽を再生するプラグインを作ったでした。

telescope.nvimはありとあらゆる検索を行うプラグインです。たとえばプロジェクト中のソースコードをファイル名であいまい検索したり、内容を正規表現で検索するプラグインです。他にもNeovimのヘルプやマッピング、Exコマンドなど、組込み機能だけでも機能豊富です。

しかし、あいまい検索だとヒットしすぎてイマイチ絞り込めない、検索結果を<c-q>でQuickfixリスト送りしたいが不要なファイルも多い、といったケースでちょっとした不便さを感じます。

今までは、<c-q>でQuickfixリスト送りした後に、vim-qfeditを使ってQuickfixリストを整理していたのですが、もう少しスマートにやりたいところ。

そこで、qfscope.nvimを作りました。以下の例では、vimでgrepした結果に対し、ファイル名で絞り込みをかけたり、マッチした行をさらにgrepしたりしています。

やっていることとしては、telescope.nvimがもともと供える<c-q>による検査結果のQuickfixリスト送りと、:Telescope quickfixによるくQuickfixリストの検索の組み合わせを、よりスムーズに行えるようにしてる感じです。

したがって、qfscope.nvimはQuickfixリスト送りに対応した任意のソースを絞り込み対象にできます。 LSPの参照や診断結果なども対応可能なのが魅力ですね。

また、Quickfixリストのファイル名部分、行内容部分、全体の3パターンに対して、あいまい検索や正規表現検索ができます。簡易的ですが、検索結果の戻る・進むも供えているので、絞り込み結果がイマイチだった時のやりなおしもできるはず。パワフルだと思うのでぜひ使ってみてください。

foo.md|1 col 1| 1行目の内容
^-----
ファイル名部分だけをあいまい検索 or grep

foo.md|1 col 1| 1行目の内容
                ^----------
                 該当行の内容をあいまい検索 or grep

foo.md|1 col 1| 1行目の内容
^--------------------------
全体をあいまい検索 or grep

ENJOY!

みなさんのファイル編集がますます捗りますように!