パーソナルツール

コマンド履歴、検索履歴を活用して、作業効率を上げよう。

作者: 小見 拓 最終変更 2012年01月08日 11時57分

「q:」「q/ 」「q?」を入力すると表示される、コマンド実行履歴、検索履歴の表示機能が邪魔だ、という意見をたまに聞くことがありますが、 その考えは非常にもったいない考えです。 コマンドラインウィンドウ上でのコマンド履歴、検索履歴の扱い方を学び、Vimエディタによる作業効率を上げましょう。 (Windows, Mac)

概要

q:q/q? を入力すると表示される、 コマンド実行履歴、検索履歴の表示機能が邪魔だ、という意見をたまに聞くことがありますが、
その考えは非常にもったいない考えです。
コマンドラインウィンドウ上でのコマンド履歴、検索履歴の扱い方を学び、Vimエディタによる作業効率を上げましょう。

履歴の表示

Vimエディタには、ノーマルモードで、 q:q/q? を入力すると、
それまでのコマンドの実行履歴、または、検索に使用した検索ワードの履歴を別ウィンドウに表示する機能があります。

q: を入力するとコマンドの実行履歴を表示し、

" コマンド履歴を表示する
q:
コマンド履歴の表示

q/ か、 q? を入力すると検索の履歴を表示します。
(履歴を見るだけであれば、どちらのコマンドを利用しても良い。)

" 検索履歴を表示する
q/
検索履歴の表示

この時、履歴が表示されるウィンドウは、コマンドラインウィンドウと呼ばれています。
このコマンドラインウィンドウを閉じるには、 :q と入力してください。

履歴の操作

コマンド、検索の再実行

コマンド履歴、検索履歴が表示されているコマンドラインウィンドウで、
履歴の上にカーソルを移動し、 Enter キーを押下すると、 そのカーソル行のコマンド、検索を再度、実行できます。

例えば、次の画面はコマンド履歴の画面ですが、
この状態で Enter キーを押下すると、カーソル行にある「:e global-head.html」が実行されます。

コマンド履歴の表示


検索履歴の場合は Enter キーを押下すると、カーソル下の検索を再度実行します。
q/ で検索履歴を開いたなら前方(↓)を、 q? で検索履歴を開いたなら後方(↑)を検索します。

検索履歴の表示

Note

直近のコマンド、検索の単純な再実行であれば、 キーによる 履歴機能を使用する方がお手軽です。

コマンドラインモード

↓ 上下( )キーで、過去の履歴を表示して実行する。

コマンドの履歴を検索


検索

↓ 検索も同様に、過去の履歴を引ける。

検索の履歴を検索

履歴を編集して再実行

コマンドラインウィンドウで表示されているコマンド履歴、検索履歴をエディタで編集して、 その編集加工したコマンド、検索を実行することもできます。
編集したコマンド、検索の実行は、履歴の再実行の時と同じく、 Enter キーで行います。
コマンドミスを修正したり、コマンドを少し変更してから実行したい場合などに有効です。

コマンドを編集 編集したコマンドを実行

Note

コマンドラインウィンドウで、履歴を編集する時はタブによる補完が効くので、
タブキーを有効活用しましょう。

コマンド編集のタブ補完

コマンドラインに履歴を送る

コマンドラインウィンドウで、特定の履歴の上にカーソルを移動し、 Control-c キーを押下すると、
カーソル行のコマンドを、コマンドラインにコピーできます。

コマンド一覧

Control-c でカーソル下のテキストを、コマンドラインに送れる。

コマンドを送る


検索履歴でも同じく、 Control-c で、カーソル下のテキストを、 コマンドラインに送れます。

検索を送る

コマンドラインモードで、過去のコマンドに追加のコマンドを入力して実行したい場合や、
「incsearch」オプションを設定している状態で、 過去の検索に、検索条件を追加して、検索対象がどう変わるか確認しながら操作したい場合に役に立ちます。

履歴表示の暴発を防ぐ

以上のように活用すれば便利な履歴機能ですが、 特に、コマンド履歴表示の q: は、 カレントウィンドウを閉じる :q とコマンドが似ているため、
Vimエディタの操作に不慣れなうちは、不必要にコマンド履歴を開いてしまうことも多いのではないでしょうか。

どうしても、履歴表示が暴発しがちな場合には、例えば、次のような設定をVimエディタの設定ファイルに追加し、
マッピングを変更してしまえば、押し間違いによる履歴表示の暴発は防げます。

" F5キーでコマンド履歴を開く
" F6キーで検索履歴を開く
:nnoremap <F5> <CR>q:
:nnoremap <F6> <CR>q/
" q:、q/、q? は無効化
:nnoremap q: <NOP>
:nnoremap q/ <NOP>
:nnoremap q? <NOP>
ドキュメントアクション
コメント
blog comments powered by Disqus