viの本質を語った良記事
vimを使い始めて間もないが、いろいろ記事や本を読んでいる。
Learning Vim in 2014というサイトでは、vimの使い方を基本となる考え方から紹介していて、なおかつ1ステップが短くて読んでいてなかなか楽しい。(個人的にはフォントが好きだ、結構大事)
上記の記事に参照リンクとして貼られていたのだが、 Why Atom Can’t Replace Vim — Medium という記事では、EmacsとAtomと比較して、vimの本質的な違いについて語っている。 とても納得のいく内容だった。
上記によると、Emacsが示したアイディアは
エディタの編集機能を複数のコマンドの集合として提供した。 そのコマンドを特定の操作キーにマッピングできるようにした。 さらに特定の言語(Lisp)で機能の拡張を可能にした。
ことである。
比べて、viのアイディアは何かというと、
エディタの編集機能を、小さく汎用なコマンドとして用意し、それらを組み合わせられるようにした。
に尽きるという。例えば、カーソルを動かすmotionコマンドに
- w :次の単語に移動
- $ :行末に移動
- G :ファイルの最後に移動
があるが、これと d (削除)コマンドと組み合わせると、
- dw :単語の削除
- d$ :行末まで削除
- dG :ファイルの終わりまで削除
として機能する。同じように y (コピーする)と組み合わせられる。結果は想像の通り。
Emacsでは、編集機能を複数のコマンドとして用意しているが、上記のような組み合わせの発想はない。それぞれが単体で実行が終了する。そこが大きな違い。
viのこの発想はまさに
This philosophy of minimalist commands that can be composed together is the fundamental originating philosophy of Unix, and Vim exemplifies it like no other editor.
と、記事に書かれている通りだっ。
viを進化させたvimでは、もともと出来なかった、キーのカスタマイズや、特定言語により機能拡張もできるようになっている。もはや無敵ではないか。と思った。