こんばんは。Vimがないと戦闘力が10%程度まで低下してしまうcocoponです。シンプルなファイル操作プラグイン「Vaffle」を新たに開発しまして、今回はその紹介記事です。
Vim標準のファイラー「Netrw」
Vimには、「Netrw」という名前のファイラーが標準で付属しています。例えば:e .
(カレントディレクトリを開く)のようにディレクトリを開くと、Netrwが起動します。
これがちょっと使いづらいのです。慣れの問題もあるのかもしれませんが、ファイル操作がサクッと直感的にできない。
例えば、~/foo.txt
を~/bar/
に移動しようと思ったら、
~/
を開いてファイル一覧を表示- 移動先
bar/
をmt
でターゲットに設定 - 移動対象
foo.txt
をmf
で選択 - 選択した移動対象を
mm
でターゲットに移動
という操作になります。うーむ…。
ネットワーク越しのファイルを編集できるなど、どうやら意外と多機能らしいのですが、個人的にはあまりお世話になることはありません。
理想のファイラーを求めて
このような状況のなか、理想的なファイラーを追い求めて、多くの先人たちがそれぞれ独自のプラグインを制作・公開しています。自分も早い段階でNetrwを離れて、他のファイラーを使いはじめました。
vimfiler
「vimfiler」は、Vim界で知らない者はいない、「暗黒美夢王(あんこくびむおう)」ことShougo氏によるプラグイン。高機能かつ操作が直感的です。同じくShougo氏によるプラグイン「Unite.vim」のインストールが必須となります。
最近、このUnite.vimの開発停止および後継プラグイン「Denite.nvim」への移行が宣言されまして、将来的にはvimfilerも移行していくものと思われます。
@pink_bangbi @deris0126 後継プラグインがないので正式発表はしてませんが、vimfiler の開発を続ける気はないです。
denite.nvimベースのファイラープラグインを作る気ではいます— 暗黒美夢王(deo developer) (@ShougoMatsu) December 28, 2016
Denite.nvimの動作には、Vim8.0以降かつPython 3.xのサポートが必須と、動作環境がややシビアです。とあるプラグインの動作確認のため、手元でPython 3.x対応のVimを用意した経験があるのですが、なぜかPython 2.xが有効になり3.xが無効になってしまうトラブルに巻き込まれるなどして、ビルドオプションを再度書き直し、ビルドし直し…あれは辛かった。(ユーザーとしての意見はさておき、開発者としてはとてもよいことだと思います)
とにかく、パワフルな動作を確保するために動作環境を絞り、幅広い要望に対応できるようカスタマイズ性を高めていくのが、Shougo氏のプラグインの哲学のようです。
長らく愛用していたのですが、広いバッファで表示がもたつく現象に悩まされたり、ウィンドウを分割すると意図せず連動してしまったり…。「プラグインはシンプルに」「それぞれはなるべく疎結合であってほしい」という個人的な好みとの相違もあり、いろいろな条件を考慮した結果、乗り換えを決意しました。
dirvish
次に試したのが「dirvish」。ドキュメントで「Minimalist “path navigator”」とうたわれているとおり、その機能はとてもシンプルに保たれています。
動作は軽快ですし、「シンプルであれ」という強い意志を感じて好印象なのですが、どうしても機能に不足を感じてしまいます。複数ファイルを選択して移動したい、リネームしたい、…。あぁ、vimfilerだったころが懐かしい。
こちらもしばらく使っていましたが、やはり我慢できなくなり…。とうとう自作するしかなくなってしまいました。
理想のファイラー
以上の状況を整理すると、自分の理想のファイラーとは…。
- シンプルで軽快
- 複数ファイルの選択・操作が直感的にできる
- ウィンドウを分割しても問題なく動作する
コンセプトは決まった。よーし、がんばって作るぞ!
…といった経緯で開発したのが、ファイラープラグイン「Vaffle」です。
プラグイン名は、Vimのバッファー(Buffer)とファイラー(Filer)の語をそれぞれ組み合わせつつ、甘いもの好きなので響きの似ている(?)ワッフル(Waffle)にちなんでまとめたものです。
Vaffle
ディレクトリ間は、慣れ親しんだhjklでサクサクと移動できます。ウィンドウを分割してもだいじょうぶ。
新規ファイルはfileのi
、新規フォルダーはfolderのo
。
複数ファイルの選択はスペース。ディレクトリをまたいだ選択はできないのでご注意を。
選択したファイルの削除はd
、リネームはr
、移動はm
。
詳しい使いかた/カスタマイズ方法は、ドキュメント(:help vaffle
)に書いてあります。理想的なファイラーを追い求めて幾千年なかた、よかったら試してみてください。