2024-01-02

nvim-tree.lua で .gitignore にリストされたファイルも表示する

Neovim で使えるファイルエクスプローラープラグインとして nvim-tree.lua があります。 とても手に馴染んでいて、気に入っているプラグインの1つです。

このプラグインで .gitignore されたファイルもエクスプローラー上に表示する方法と、表示したくなった背景についてご紹介。

設定方法

nvim-tree.lua のデフォルトでは .gitignore に登録されたファイルは表示されませんが、この挙動を変える設定項目として filters.git_ignored1 がありますので、ここを切り替えるだけで完了です。

require("nvim-tree").setup({
  filters = {
    git_ignored = false, -- デフォルトはtrue
    custom = {
      "^\\.git",
      "^node_modules",
    },
  },
})

filters.custom2 というのは、表示したくないファイル・ディレクトリを Vim の正規表現で指定できる設定項目です。.gitnode_modules のようないくつかのディレクトリは Neovim 上で開きたい場面も考えづらく、また(おそらく)パフォーマンスも劣化してしまうと思い、除外しています。

実はドキュメントを見るまで filters.git_ignored の存在は知らず、もう少し色々工夫が必要かなと想像していたのですがあっさり実現できてしまいました。さすがは人気のあるプラグインです。

.gitignore にリストされたファイルも表示したくなった理由

Neovim 上でファイルを開くときは telescope.nvim というファジーファインダーで検索して開くことが最も多いのですが、こちらは頻繁に使うために速度が重要です。そのような理由もあり telescope.nvim でも .gitignore されたファイルは基本的に検索対象外にしていました。

ですが開発をしていると .env ファイルや Rails アプリケーションでよく使われる config gem が作る config/settings/*.yml といった、秘匿情報系を含むファイルを編集したいケースがちょくちょくあることに気が付きました。これらのファイルは通常 .gitignore に記述されます。

個人的な感覚ですが、ファイルエクスプローラーの方は比較的ディレクトリ構造のまま表示してくれる方が直感的で扱いやすいように感じたので nvim-tree.lua の方で .gitignore にリストされたファイルも表示するようにした、という背景でした。


  1. 詳細は :help nvim-tree.filters.git_ignored をご参照
  2. 詳細は :help nvim-tree.filters.custom をご参照