Previous: Minibuffer History, Up: Minibuffer


4.5 ミニバッファコマンドの繰り返し

ミニバッファを少なくとも1回使ったコマンドは、 その引数の値とともにすべて特別な履歴リストに記録されますから、 コマンド全体を繰り返すことができます。 特に、M-xはコマンド名を読み取るためにミニバッファを使うので、 必ず履歴に記録されます。

C-x <ESC> <ESC>
最近のミニバッファコマンドを再実行する(repeat-complex-command)。
M-x list-command-history
C-x <ESC> <ESC>で繰り返せるすべてのコマンドを 新しいものから順に並べたコマンド履歴全体を表示する。

C-x <ESC> <ESC>は、 ミニバッファを利用した最近のコマンドを再度実行します。 引数を指定しなければ、そのような最後のコマンドを繰り返します。 数引数は、どのコマンドを繰り返すかを指定します。 1は最後のコマンドを指し、大きい数ほどより以前のコマンドを指します。

C-x <ESC> <ESC>は、過去のコマンドをLisp式に変換し、 その式のテキストで初期化したミニバッファに入ります。 <RET>だけを打てば、コマンドは以前とまったく同様に繰り返されます。 Lisp式を編集してコマンドを変更してもかまいません。 最終的な式が何であれ、その式を実行します。 繰り返したコマンドは、 履歴リスト内に既存の最後に実行したコマンドと同一でない限り、 コマンド履歴の先頭に追加されます。

Lisp構文が理解できないとしても、 繰り返しのためにどのコマンドが表示されたか、たぶんわかるでしょう。 テキストを変更しなければ、以前とまったく同じに繰り返されます。

C-x <ESC> <ESC>でいったんミニバッファに入ってしまえば、 ミニバッファ履歴リストコマンド (M-pM-nM-rM-s、see Minibuffer History) を使って、保存されたすべてのコマンドの履歴リストの中を動き廻れます。 目的のコマンドを捜しあてたら、通常の方法でその式を編集できますし、 これも通常と同じように<RET>を打てば実行できます。

ミニバッファを使った過去のコマンド一覧は、 Lispのリストとして変数command-historyに格納されます。 各要素はそれぞれ1つのコマンドとその引数を表すLisp式です。 Lispプログラムからは、 command-historyの要素を引数として evalを呼べばコマンドを再実行できます。