Neovimのファイラー比較 netrw/nvim-tree/neo-tree/oil.nvim
ファイラー系プラグインは種類が多く、しかも数年単位で流行が入れ替わります。以前主流だったプラグインが更新を止め、代わりに別のプラグインが定番になる、というサイクルを繰り返しているジャンルなので、今の状況を前提に整理し直します。
前提が1つ変わりました。Neovim 0.13から、nvim .で出る標準の一覧はnetrwではなくなります。新しいdirは「開く・上へ・読み直す」しか持たないため、ここで比較しているような機能を求めるなら、netrwを明示的に呼ぶかプラグインを入れることになります。Vim側は変わりません。Neovimで0.13以降を使っていて、この記事の操作が見当たらない場合は:Exploreを打つと従来どおりnetrwが開きます。詳しくはNeovim 0.13でnetrwが標準の一覧から外れる件にまとめています。
目次(9項目)
標準のnetrwという選択肢
プラグインを1つも入れたくないなら、まずは標準搭載のnetrwで十分かを確認する価値があります。ブラウジング・ファイル操作・圧縮解凍・リモート編集まで一通りこなせます。詳しい使い方はnetrw関連の記事にまとめています。ツリー表示やGitステータス表示のような装飾面は弱いので、そこに不満が出てから他のプラグインを検討するくらいで足りることが多いです。
サイドバー型:nvim-tree.lua / neo-tree.nvim
従来型のツリー表示サイドバーを求めるなら、この2つが定番になっています。
| プラグイン | 特徴 |
|---|---|
nvim-tree.lua | シンプルで動作が安定。素直な挙動を求める人向け |
neo-tree.nvim | ファイル/バッファ一覧/git statusなど複数ソースを切替可能。kickstart.nvimで採用 |
どちらもGitステータスの表示やアイコン表示(別途アイコンフォントの設定が必要)に対応しています。
テキスト編集型:oil.nvim
近年広がってきたのが、ディレクトリの中身を普通のテキストバッファとして表示し、行を編集する感覚でファイル名の変更・削除・作成までこなせるoil.nvimのようなプラグインです。専用のキーバインドを覚える必要が少なく、Vimの通常の編集操作(置換・ヤンク・複数行選択)がそのままファイル操作に使えるのが特徴です。この方式に追随する後発のプラグインも登場してきており、「ツリーを眺める」より「テキストとして操作する」ほうが性に合う人には向いています。
選び方の目安
| 状況 | おすすめ |
|---|---|
| プラグインを増やしたくない | netrw |
| 見た目重視のサイドバーが欲しい | nvim-tree.lua / neo-tree.nvim |
| 普段の編集操作でファイル操作もしたい | oil.nvim系 |
迷ったら、まずnetrwで困る場面が実際にあるかを確認してから導入を検討する順番がおすすめです。プラグインを増やすほど設定と保守の負担も増えるため、標準機能で足りているのに導入だけしてしまうケースは意外と多いです。
以前流行っていたツリー型ファイラーから、最近はoil.nvim系に乗り換えました。ツリーを目で追って選ぶより、テキストとして一括リネームや削除ができるほうが、結果的に手数が減ることに気づいたのが決め手でした。とはいえサーバー上の作業ではプラグインを入れないことが多く、結局netrwに戻る場面も変わらず多いです。
サイドバー型で引っかかりやすいところ
ツリー表示のサイドバーを入れると必ず出てくるのが、カレントディレクトリとツリーの根がずれる問題です。:cd でディレクトリを移動しても、ツリー側が追随する設定になっていないと古い場所を映し続けます。開いているファイルの位置とツリーの選択が合わないときは、たいていここが原因です。
もう1つは画面幅です。サイドバーは常に一定の幅を取るので、分割して2つのファイルを並べたい場面では本文の幅が削られます。ノートPCの画面ではこれが効いてきて、結局サイドバーを閉じたまま使うようになった、という流れは珍しくありません。
導入する前に、ファイルを開く手段として本当にツリーが要るのかを一度考えてみてください。ツリーが役に立つのは構造を眺めたいときで、目的のファイルを開くだけなら別の手段のほうが手数が少なく済みます。
テキスト編集型で気をつけること
ディレクトリをバッファとして編集する方式は、書き換えただけでは反映されず、保存した時点でファイル操作が実行されます。行を消しただけで削除されるわけではないので安全な一方、保存を忘れると何も起きていないように見えます。
Vimの編集操作がそのまま使えるということは、置換もマクロも効くということです。連番のファイル名を一括で振り直す、拡張子だけをまとめて変える、といった作業は、この方式がいちばん短く済みます。一括置換の書き方をそのまま持ち込めます。
注意が要るのはバージョン管理下のリネームです。エディタ側でファイル名を変えると、Gitからは削除と新規作成に見えることがあります。履歴を残したい場面では git mv を使うか、変更後に git add -A でまとめて拾わせてください。
ファイラーを使わないという選択
そもそもファイル一覧を出さずに済ませる方法もあります。ファイル名の一部を覚えているなら :find や曖昧検索のプラグインのほうが速く、開き直すだけなら :b でバッファ名の一部を打つほうが確実です。
:set path+=**
:find config " 名前の一部で探して開く
:b conf " 開いているバッファを名前の一部で切り替える
ファイラーが要るのは、名前を思い出せないときと、ディレクトリの構造そのものを確認したいときです。この2つが自分の作業で実際に何回起きるかを数えてみると、プラグインを増やすかどうかの判断がつきます。バッファの扱いに慣れておくと出番はさらに減るので、バッファ・ウィンドウ・タブの違いを先に押さえておくと選びやすくなります。
まとめ
ファイラー系プラグインは目的によって向き不向きがはっきりしています。サイドバー表示ならnvim-tree.lua/neo-tree.nvim、編集操作の延長で扱いたいならoil.nvim系、そして何も入れたくないならnetrwで十分戦えます。netrwで足りるかどうかを先に見極めたいなら、起動方法とマークによるファイル操作のあたりを一度触ってから判断すると外しません。