vi/vimでコマンド履歴を呼び出す

vi/vim を使っていると、いつも誤ってコマンド履歴を呼び出してしまう。原因は、:q と打つつもりが q: と打っていたことだった。

Vim では、q: は終了コマンドではなく、コマンドラインウィンドウ(command-line window)を開く操作である。このウィンドウには、以前入力した Ex コマンド、たとえば :w:q:set number などが一覧表示される。本質的には、編集可能なコマンド履歴リストだ。

よく使う操作は次のとおり。

  • q:: コマンド履歴ウィンドウを開く。
  • q// 検索履歴ウィンドウを開く。
  • q?? 検索履歴ウィンドウを開く。
  • ウィンドウ内でノーマルモードの操作により履歴コマンドへ移動し、Enter を押して実行する。
  • Ctrl-C:q、またはウィンドウを閉じることで、コマンド履歴ウィンドウを終了できる。

単にコマンドラインで直前のコマンドを呼び戻したいだけなら、必ずしもコマンド履歴ウィンドウを開く必要はない。: を入力したあと、方向キー、または Ctrl-PCtrl-N で履歴コマンドを切り替えられる。

:

その後、次のキーを押す。

Ctrl-P  前のコマンド
Ctrl-N  次のコマンド

つまり、誤って q: を押しても慌てる必要はない。Vim が固まったわけではなく、ただコマンド履歴ウィンドウに入っただけだ。ウィンドウを終了してから、あらためて :q と入力すればよい。

Leave a Reply