Vim駅伝2025-03-24の記事です。 1日遅れで申し訳ありません。
さて、telescope.nvimは言わずと知れたファジーファインダーと呼ばれるものです。ファジーファインダーとは、ファイルなどの候補一覧から、検索などで欲しいものを絞りこみ、開くなり消すなり任意のアクションを実行するためのツールです。たしかそんなようなことをShougoさんがvim-jp ラジオの#7か#8で語ってたはず。良い話いっぱいなので、聞いてみてください。
vim-jpではまたファジーファインダーかと叫ばれるくらいには作者が多く、vim-jpにいらっしゃる方の作品だけでもShougo/ddu.vim、vim-fall/fall.vim、hrsh7th/nvim-deckなどがあります。それくらいには求めるところがユーザーによって変わるということでしょう。
ということで、私が長らく利用しているtelescope.nvimのpickerを紹介します。 pickerはtelescope.nvim用語ですが、先のファジーファインダーの説明における候補一覧を作成する部分に相当します。
よく使う順に以下。
- ファイル選択
:Telescope find_files
- ファイルを開くときに利用しています
- live grep:
:Telescope live_grep
- プロジェクト内のファイルを検索するときに利用しています
- コマンドパレット:
- 以下の記事で紹介している、keymapsソースを流用したコマンドパレットです
- telescope.nvimで作る簡易コマンドパレット(VSCodeのCtrl + Shift + Pっぽいの)
- gin.vimで捗るgitのログ改竄 (instant fixup)
- LSPジャンプ:
:Telescope lsp_definitions
や:Telescope lsp_references
など- ジャンプ先が単一の場合は一発でジャンプ、複数の場合はtelescopeが開きます
- definitionとimplementationは区別して考えるのがしんどいので、混ぜたpickerを自前実装してます
- nvim-gtdのアイデアを拝借してます
- Git status:
:Telescope git_status
- 差分のあるファイルのステージング・アンステージング、編集に利用しています
- 再開:
:Telescope resume
- 直近で開いたTelescopeを検索状況保持したまま再開できます
- バッファ選択
:Telescope buffers
- 最近開いたファイルやターミナルをさくっと探したいときに
- Preview画面が常にバッファの先頭だけど、ターミナルの時は末尾を表示してくれると嬉しいかも
- 最近開いたファイルやターミナルをさくっと探したいときに
- Quickfix候補選択:
:Telescope quickfix
- 直近のquickfixリストから検索できます
live_grep
した結果などを<C-Q>
でquickfixに入れるとファイル名での絞り込みができて便利- これをもっと手軽に実現するプラグインとしてatusy/qfscope.nvimを作っています
- ヘルプ:
:Telescope help_tags
- ヘルプの検索・閲覧に利用しています
- バッファ内曖昧検索:
:Telescope current_buffer_fuzzy_find
- だいたい標準の検索でたりるけどたまーに便利
- とくに標準の検索でマッチしたハイライトを残しつつさくっと移動したいとき
- コマンド履歴:
:Telescope command_history
- 複雑なコマンドを再利用することはあまりないですが、このコマンドどう使うんだっけと思いだしたいときに便利
たぶんこんなところかな?
ENJOY!
前回はMinervaさんによる「CodeCompanionを使ってNeovimと一緒に楽しくAI Coding」でした。 Codecompanion、ちょこちょこ使ってるので読まなきゃ……!
次回はmikoto2000さんによる「Vim のマクロを使って気持ち良くなった話 - 表のデータを TS の enum にする」だそうです。