🍳

lir.nvim というファイラの紹介

2021/12/16に公開

自分で作った lir.nvim というLua製のNeovim用のファイラを紹介します

https://github.com/tamago324/lir.nvim

筆者について

  • Vim 歴はたぶん 4年くらいです
  • 去年くらいから Neovim を本格的に使い始めました

lir.nvim について

このプラグインは、mattn さんの vim-molder に影響されています。

https://zenn.dev/mattn/articles/1da58d6ee91a8e36e690

https://github.com/mattn/vim-molder

自分は vim-molder を使い始めた直後に Neovim に乗り換えたため、Neovim でも vim-molder のようなファイラがほしいと思っていました。
Neovim では lua を使って処理をできることを知り、vim-molder を参考にして Lua で vim-molder っぽいものを書いてみることにしました。
最初は自分だけが使えればいいって思い vimfiles に書いていたのですが、いい感じにできたのでプラグインとして公開しました。
lir.nvim はかれこれ1年位使っていると思います。

lir.nvim の特徴

action をユーザーがカスタマイズできる

lir.nvim ではファイルの作成やディレクトリの作成、ディレクトリの移動などを簡単に作成できる仕組みを提供しており、require('lir').get_context() で取得できるファイルの情報 (表示しているディレクトリのパスやカーソル下のファイル名など) を使ってユーザーが独自に action を作成できるようになっています。これは vim-molder と vim-molder-operations の実装を参考にしました。

これにより、lir.nvim が提供しているデフォルトの action (lir/actions.lua) の挙動が合わなかった場合、ユーザーが自分好みに action を作れるようになります。

筆者も好きなようにカスタマイズしています。 → vimfiles

ファイルタイプのアイコン表示

オプションで nvim-web-devicons を使用して、ファイルタイプのアイコンを表示できるようにしています。

ファイルタイプのアイコンがあるとファイルの種類がわかりやすくなるため、自分としてはこの機能は必須でした。

左がアイコンなし、右がアイコンありです

デフォルトのマッピングは提供しない

lir.nvim 上での操作もそうですが、lir.nvim を起動するためのマッピングも提供していません。そのため、ユーザーが好きなようにマッピングを設定できます。
README.md の設定をコピペで動くようになっていますが、自分なりの設定ができるのでいいかなと思っています。

floating window での操作性が良い

自分は、Neovim の floating window を使ってサクサクとファイラを開きたいと思っていたため、lir.nvim では floating window での操作を重視しています。
また、setup 関数で floating window の設定もできます

ディレクトリ移動でのカーソル位置の保持

毎回、バッファの一番上にカーソルが行くのは自分としては使いにくいと感じているため、この機能を重視しています。これにより、ディレクトリ間での移動が快適になっていると思います。

lir.nvim の拡張機能

lir-git-status.nvim

git のステータスが表示されます。
最近、この PR によって動作が高速になったため、実用的に使えるようになりました。
お気に入りの拡張機能です。

lir-mmv.nvim

mmv を使って、リネームしたいと思って作りましたが、正直あまり使用していません...

lir-bookmark.nvim

ファイルやディレクトリをブックマークしておいて、さくっと開けるようにしたいと思って作りましたが、こちらもあまり使用していません...

まとめ

シンプルで、action をカスタマイズできる lir.nvim を紹介しました。
Neovim でシンプルなファイラを探している方や、自分で action をカスタマイズしてみたい方はぜひ使ってみてください。

:qa!

Discussion