ex コマンド quit は vi を終了させる。
q[uit][!]
コマンド名に文字 ! が後続していない場合:
- 最後に完全な保存が行われてからバッファが変更されていれば、エラーにする
- vi の起動時に与えた引数リストのうち、現在参照しているファイル以降の編集待ちファイルが待機しており、かつ、最後に実行したコマンドが quit、wq、xit、ZZ のいずれでもない場合は、エラーにする
コマンド名に文字 ! が後続している場合は、編集セッションを終了する。
引数リストというのは、
$ vi foo.txt bar.txt baz.txt
などというコマンドラインで vi を起動した際に与えたファイル名の配列 [foo.txt, bar.txt, baz.txt] のことだ。さて、foo.txt の編集中に :q する。すると、(vim の場合)2 more files to edit などというエラーになる。残りの bar.txt と baz.txt どないすんねんと怒っているわけだ。ただ、:q してさらに :q した場合などは、なんやそないに終了したいんなら言うとおりにしたるわ、と妙にユーザーフレンドリーな振りまいをし、終了する。
なお wasavi は引数リストをサポートしていないので、このルールは関係ないし関西弁でしゃべったりもしない。
* * *
というわけで write と quit コマンドがあるのだが、実際にファイルを編集、特に数行編集して即 vi を抜けるなんていう場合、2 回 ex コマンドを投入したり、あるいは :w|q と打つのが面倒だということなのか、wq というコマンドが用意されている。
wq は write をまず実行し、成功したら quit を実行するという処理をひとまとめにして行う。wq のシンタックスは write と同じである。