Neovimでバッファみたいにファイル操作できるoil.nvimの使い方
Neovimのファイルエクスプローラーのプラグインoil.nvimを紹介します。
oil.nvimとは
oil.nvimはちょっと変わったファイルエクスプローラーです。ファイル一覧のバッファを編集することで「作成・削除・リネーム・移動」ができます。
ファイル名を変えたりディレクトリを移動すると、LSP経由でimportのパスも置換してくれます。
インストール
READMEを参考に、各自のパッケージマネージャーでインストールします。
アイコンを表示させたい人はmini.iconsかnvim-web-deviconsのどちらかを入れておきましょう。
※この記事ではnvim-web-deviconsの方を入れています。
最低限の設定
setup
を呼び出すだけで最低限の設定は終了です。カスタマイズは後で説明します。
使い方
oil.nvimのファイルエクスプローラーを開く方法はいくつかあります。
:Oil
:Oil <path>
で指定したディレクトリを開ける:Oil --float
だとfloating windowで開ける
:e <path>
- この挙動は設定でオフにできる
- APIの呼び出し
require("oil").open(dir)
require("oil").open_float(dir)
ファイル操作
ファイルエクスプローラーを開いたら、あとはバッファを編集して保存するだけです。
次の動画はリネームの例です。history.js
というファイルをhoge.js
に変更しています。
バッファを保存すると、適用するファイル操作の確認画面が出ます。
同様にファイルの作成・削除・移動ができます。
キーマップ
ファイルの行でEnterを押すと、そのファイルを開きます。
ディレクトリの行でEnterを押すと、ファイルの一覧がそのディレクトリに切り替わります。
-を押すと親ディレクトリに切り替わります。
ここらへんの操作感はnetrwに近いです。
Ctrl+cで閉じます。
次の手順でファイルを別階層のディレクトリに移動できます。
- 行を切り取る(
dd
など) - ディレクトリを切り替える(Enterや-)
- 貼り付け(
p
など)
Ctrl+pでプレビューもできます。
キーマップはデフォルトでいくつか定義されており、変更も可能です。詳しくは:h oil-actions
で確認してください。
LSP
LSPのファイルリネームにも対応しています。
たとえばTypeScriptでsrc/foo.ts
をsrc/bar.ts
にリネームすると、importのパスも変更されます。
次の動画が実際の例です。
リネーム後にLSPで編集されたファイルは、バッファとして開きます。
※LSPを立ち上げずにリネームすると、この機能は動きません。
カスタマイズ
ここからは筆者のカスタマイズを紹介します。
フルパスで開かれるのを防ぐ
ファイルの行でEnterを入力すると、そのファイルがフルパスで開かれるようです。
これを相対パスに変更するには次のように書きます(参考)。
2種類のキーマップを設定
まずは:Oil
をそのまま実行するキーマップを設定しました。
上記は、「今開いているバッファのディレクトリ」が開きます。
これに対して、カレントディレクトリを開くキーマップも設定しました。
以上、oil.nvimの紹介でした。import文の書き換えをやってくれるので重宝しています。
ファイルツリーではない点に注意です。
初めてmmvを知った時に近い感動を覚えました。