neovimでvimfilerならdefx

neovimを使うようにしてからvimfilerが使えないことに気づいたので、他に使えるものがないか調べたところdefx.nvimがあったという話

neovimでvimfilerを開こうとするとエラーになる。なのでvimfilerのgithubを見てみるとこんなことが書いてあった。

GitHub - Shougo/vimfiler.vim: Powerful file explorer implemented by Vim script

Note: Active development on vimfiler.vim has stopped. The only future changes will be bug fixes. Please see Defx.nvim. https://github.com/Shougo/vimfiler.vim/issues/380

というわけでdefxという同様の機能をもった新しいプラグインが開発されていることを知る。

GitHub - Shougo/defx.nvim: The dark powered file explorer implementation

インストール方法を見ると.vimrcに直接書く方法が書いてあるが、私はdeinでtoml管理しているのでそちらの方法で設定。

ヘルプを見るとdefxではデフォルトのキーバインドは設定されていない

Defx does not provide any of default key mappings. You need to define original key mappings by defx#do_action().

使う人がそれぞれのいいようにカスタマイズして使ってね、という意図なのだと思うが、参考ということで作者であるShougoさんの設定を入れて動かしてみる。

shougo-s-github/deinlazy.toml at master · Shougo/shougo-s-github · GitHub

この設定で基本的にvimfilerで使っていたのと同様のことができるようになりました。あとはキーを自分好みに置き換えたりヘルプを見つつ新しい設定を試したりすればOK。ただ私の場合はvimfilerで同じような設定で使っていたのでこのままで問題なしでした。

体感としてvimfilerよりレスポンスがよいです。私の以前の環境ではvimfilerのウィンドウを開いた際に一瞬の間がありましたが、defxではそれがなくなった感じ。(もちろんvimとneovimの差も含まれていると思いますが)

補足

remove_trash

defx#do_action('remove_trash')を使う場合、Send2Trashを入れる必要があります。

これでOK

$ pip install Send2Trash

単純な削除も用意されていますが、rm -rをワンタッチでできるようになってしまうため、間違えたときのためにremove_trashを使っておいた方がより安全そう。

plugins.ftplugin

これはdefxではなくdeinについての話ですが、以下のようにtomlに書くことでfiletypeに応じた設定の有効化が簡単にできます。

[plugins.ftplugin]
defx = '''
    ...
'''

私はこの設定を見るまでtoml上でのplugins.ftpluginという設定方法を知らなかったので大変勉強になりました。

今回最初にこれを設定した際、defxのウィンドウを開いてもここでの設定が有効化されなかったのですが、deinを久しくupdateしてなかったことが原因だったようで最新にしたらちゃんと反映されるようになりました。

参考

defxを使ってみる - 環境構築・零

https://blog.x39.dev/terminal/defx/