vi/vim を使っていると、いつも誤ってコマンド履歴を呼び出してしまう。原因は、:q と打つつもりが q: と打っていたことだった。
Vim では、q: は終了コマンドではなく、コマンドラインウィンドウ(command-line window)を開く操作である。このウィンドウには、以前入力した Ex コマンド、たとえば :w、:q、:set number などが一覧表示される。本質的には、編集可能なコマンド履歴リストだ。
よく使う操作は次のとおり。
q:::コマンド履歴ウィンドウを開く。q/:/検索履歴ウィンドウを開く。q?:?検索履歴ウィンドウを開く。- ウィンドウ内でノーマルモードの操作により履歴コマンドへ移動し、
Enterを押して実行する。 Ctrl-C、:q、またはウィンドウを閉じることで、コマンド履歴ウィンドウを終了できる。
単にコマンドラインで直前のコマンドを呼び戻したいだけなら、必ずしもコマンド履歴ウィンドウを開く必要はない。: を入力したあと、方向キー、または Ctrl-P、Ctrl-N で履歴コマンドを切り替えられる。
:
その後、次のキーを押す。
Ctrl-P 前のコマンド
Ctrl-N 次のコマンド
つまり、誤って q: を押しても慌てる必要はない。Vim が固まったわけではなく、ただコマンド履歴ウィンドウに入っただけだ。ウィンドウを終了してから、あらためて :q と入力すればよい。
