これまでモダンエディタとしてAtom、Sublime Text、Brackets、Visual Studio Codeを取り上げてきた。

これらは、エディタの歴史の中でかなり新しい方に分類され、ベースにWeb関連技術が取り込まれ、最初からすべての設定がきめ細かく作りこまれている。それぞれに特徴は異なっているものの、使い込んでいくとどれも似たようなことができることに気がつくと思う。

テキストエディタ紹介シリーズの最後は、そうしたモダンエディタとは対極にあるVimを取り上げよう。

UNIX系OSのデフォルトエディタ

LinuxをはじめUNIX系オペレーティングシステムには、必ず最初からVi系のエディタがデフォルトで含まれている。Vimはその実装系の一つで、現在ではもっとも広く普及しているVi系エディタの一つとなっている。

いつからカウントするかにもよるが、Vimは最初のコードが開発されてから30年以上に渡って続いているエディタで、かなり根強いユーザを抱えている。

Top IDE indexによれば2017年10月現在、VimはVisual Studio、Eclipse、Android Studioに次いで4位のポイントを得ている。XcodeやIntelliJよりもポイントが高い。Vimなしには生きていけないというユーザは少なくない。

Vim - 高性能多機能Vi

VimとAtom、Sublime Text、Brackets、Visual Studio Codeといったモダンエディタとの最大の違いは、Vimがターミナルでの使用を前提としたCUIアプリケーションということだ。AtomやVisual Studio Codeはターミナル内部で実行することはできないが、Vimはできる。

例えばsshでサーバにログインしてファイルを編集するといった場合、これまでに紹介してきたモダンエディタはあまり向いていないが、Vimであれば簡単にできる。Vimが愛用される理由の一つはここにある。

NeoVim、Nvi、gVim - 派生実装系

VimにはGUI版のgVimという実装系もあるが、モダンエディタと比べるとgVimの利点はあまり優れたものとは言えない。最新のターミナルにVimを組み合わせた方が何かと便利だし、GUIツールならモダンエディタの方がなにかとクールだ。

また、Vimはコードベースがかなりのサイズになっている。これをリファクタリングしたNeoVimというエディタがあり、最近ではVimではなくNeoVimを使っているユーザもいる。本連載ではVimといった場合、NeoVimも含めておこう。

今のところ、そこまで互換性が崩れているとはいえないと思うので、どちらを使うかは好みの問題だ。

NeoVim - Vimリファクタリングエディタ

そのほか、Viの実装系としてはNviというものも存在している。これはVimやNeoVimとは真逆の方向の実装系で、4BSDに搭載されていたオリジナルのViエディタをそのまま模倣したものにかなり近い。あまり機能は拡張されておらず、軽量で高速のままだ。いくつかのディストリビューションではNviがデフォルトのエディタになっている。

Nvi - 軽量高速Vi

実装系としてはこのあたりが今のところ代表的なものではないかと思う。強い理由がない限りVimを使うと考えておけばよいだろう。デフォルトでインストールされていることが多いので、viとコマンドを実行するとこのVimを使っていることが多いからだ。

30年以上も使われる理由

なぜユーザがこの30年来のエディタを使い続けているかだが、その特殊な操作方法にあると言える。

テキストを入力する挿入モードと、コマンド動作するノーマルモード、さまざまな命令を入力するコマンドラインモードという複数のモードが用意されており、ユーザはこのモードの間を行ったり来たりしながら編集を行う。

こう聞くと意味不明で扱いにくいエディタのように思えるが、使えるようになるとほかのエディタがもどかしくなるほど高い編集効率を発揮できる。

Vimはこれに加えてビジュアルモードなどほかのいくつかのモードも用意されている。プラグインを使って機能を拡張したり、設定を変更したりすることでさまざまな動作を変えられる。ただし、設定変更や操作の難易度はモダンエディタの比ではなく面倒くさい。

Vimの連載ではないので個々の操作方法を詳しく説明するようなことはしないが、次回以降、どういったことができるのかの紹介していこう。

もしこれまでGUIのエディタしか扱ったことがないのであれば、この機会に一度手を出してもらえればと思う。Windows 10でUbuntuが利用できるようになったことで、主要オペレーティングシステム(Windows、Mac OS、Linux)のどれでも簡単にVimが使えるようになった。今使い方を覚えることは未来に対する投資になるはずだ。