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