Goodbye Vim?

前記事の続き。 Vim に関しては Mac よりも長い付き合いである。

主にコーディング用のエディタとして GVim をメインに利用してきたが、これまで新しいエディタが出ては試して、そして結局 GVim に戻っての繰り返しだった。

ここであえてコーディング用としているのは、コーディング用とライティング用とでエディタを使い分けているからである。

  • コーディング用
    • プログラミング等
    • 全体を眺めて考えたりする時間が長い
    • 新規入力より編集が多い
    • 日本語の入力が少ない
  • ライティング用
    • メール・議事録・メモ等
    • 思いついたらすぐ入力
    • 新規入力が多い
    • 日本語の入力が多い

ちなみに IntelliJ IDEAEclipse などの IDE はエディタとして含めていない。IDE とエディタは別物だ。

モダンエディタの登場

Vim / Emacs 以外の選択肢としてのモダンエディタ的な存在は TextMate が走りだったと記憶している。 イケてる Web エンジニアは Mac 使って Ruby on Rails でアジャイル開発していて、動画で紹介されるチュートリアルではなにやらモダンでいかにも便利そうなエディタを華麗に操り、このエディタとフレームワークさえ使えば誰もが幸せになれるのではないかと世界中のエンジニアが思ったものだが、その時のエディタが TextMate だった。

以降、登場したモダンエディタとしては以下が代表的なものとして挙げられるだろう。

どれも Vim に変わる存在としての可能性を探るために、それなりに使っては評価してきたが、1ヶ月も続かないものばかりだった。リリース当初だけの評価ではなく、それぞれ継続的にメジャーバージョンアップが行われる度に乗り換えては評価してきた。

コーディング用のエディタに求めること

ここで僕がコーディング用のエディタに対して求めることを整理しておくと、以下がポイントとなる。

  • Vim キーバインド
  • 軽量さ・軽快さ
  • クロスプラットフォーム
  • 拡張性
  • 将来性

そう、僕が一番大切にしているのは Vim ライクな操作ができるかどうかであって、結局 Vim からは脱却できていないのだ。

なぜ Vim を使い続けてきたかというと一番快適に Vim キーバインドが使えるエディタが Vim だったというだけの理由である。次点で、軽量さ・軽快さ・クロスプラットホームをクリアーしているからだ。 拡張性・将来性に関しては Atom / VSCode あたりの方が高くみえるし、そうみえるから乗り換えようとしている。

最近のモダンエディタは質の差はあれど Vim ライクなキーバインドを実現するプラグインは大抵存在する。Atom に関してはどうも軽量さ・軽快さに欠けていたので、一通り条件をクリアーしてそうなエディタとして VSCode に可能性を求めることにした。 (Sublime Text 3 に関しては最近評価できてないのでもしかしたら可能性あるかもしれないけど、現時点ではあまり興味ない)

Visual Studio Code の所感

まず軽量さについては、Vim のそれには圧倒的に劣るが他のモダンエディタに比べてもかなり軽い部類だ。拡張性については Vim に比べて用意されている UI コンポーネントが多いこともあって UI 的な表現力が高く、またそれを TypeScript で書けるのは Vim script と異なり馴染みがあってとっかかりやすい。 Vim キーバインドについては VSCodeVim がなかなか頑張っていて他エディタの Vim プラグインより出来がよい方だと感じたし、割と違和感なく使えるものになっている。

総合的な所感としては、Vim を超えているというよりは Vim が無くても生きていける環境がようやくできたという感触。一応コーディング用のエディタに求めるものは一通り揃っていて、実際ここ1ヶ月くらいはほぼ VSCode だけで生きていけている。

Visual Studio Code の微妙な点としては、

  • 日本語の単語区切りに対応していない
  • VSCodeVim について
    • undo / redo の挙動がおかしい
    • Multi Cursor が考慮されてない

などがあって割とツラいのだがなんとかしのいでいる。

いざとなったら Open in Vim というプラグインがあるのでいつでも本物の Vim に逃げることはできる。

なので、暫く VSCode メインで使っていこうとは思っているが Vim も引き続き使っていくことにはなりそうだ。

Vim は不滅だ。

ライティング用のエディタについて

かなり特殊な例なのかもしれないけど、僕はコーディングの時は Vim、メール・メモなどの文章を書く時は Emacs を使いたいのだ。 これもまた本物の Emacs である必要はなくて、Emacs キーバインドが使えれば良いだけなんだけど、これに関しての話もいろいろあるのでまた別記事で書きたいと思う。