NeovimでのFuzzyFileFinder「Telescope」を使ってみる

vimでFuzzyFinderといったら国内ではShougoさんのUniteやDeniteから始まり今はdduが広まってきてます。
海外はCTRL-Pやfzfが有名ですが、Neovim環境というとTelescopeが有名な模様。

github.com

なんでTelescopeなのか?

zenn.dev

この記事とか読んで、ほんとはddu使いたかったけど、職番環境でDeno使えなかったら。
Telescopeだとluaで書いているので、プラグイン2つ入れたら使える。

インストールはPackerで。 Pluginを管理しているplugins.lua

   use{ 'nvim-lua/plenary.nvim'}
   use{ 'nvim-telescope/telescope.nvim'}

を追加。再起動して、 :PackerInstall
:PackerCompile
するだけで終了。

再起動して :Telescope find_files
と入力するだけで、すぐ動く。

Telescop起動したところ

ファイル名やpathの一部だけで探してくれるので快適。検索欄に日本語入力してもいけた。

終了するときはESCかCTRL+Cで終了。
ESCはこの画面のNormalモードのとき。最初は画面した側の入力欄でInsertモードになってるので、1回目のESCでNormalモードに。NormalモードでのESCで終了になる。

Telescopeではどんな内容を探すのかというのでPickerというのが準備されてる。
ファイル名だけでなく、いろいろあるので組み込みのを使ったり、増やしたりとほんと多機能。
最初は多いので、find_filesとbuffersとhelp_tagsだけ試してみてもいいんじゃないかと。
buffer切り替え用のbuffersはほんと便利。
キーマップを設定することでコマンドの入力も簡単に

-- これは記入済
vim.keymap.set('n', 's', '<NOP>',{noremap = true})
-- 今回追加分
vim.keymap.set('n', 'sf', '<cmd>lua require("telescope.builtin").find_files()<cr>',{noremap = true})
vim.keymap.set('n', 'sb', '<cmd>lua require("telescope.builtin").buffers()<cr>',{noremap = true})
vim.keymap.set('n', 'sh', '<cmd>lua require("telescope.builtin").help_tags()<cr>',{noremap = true})

こうすればNormalモードで

  • s + f でファイル検索
  • s + bでバッファ一覧
  • s + hでヘルプ一覧

が表示される。これから機能追加していくけど、公式ページの説明見るだけでも面白そう。