Next: , Previous: Completion, Up: Minibuffer


4.4 ミニバッファ履歴

ミニバッファで入力した引数はすべてミニバッファ履歴リスト (minibuffer history list)に保存され、 あとで別の引数中で使うことができます。 特別のコマンドで、以前に使った引数のテキストをミニバッファに入れます。 これらは、ミニバッファの古い内容を破棄するので、 過去の引数の履歴の中を動き廻っていると考えることができます。

<UP>
M-p
ミニバッファ履歴中の1つまえ(古い)の引数文字列に移動する (previous-history-element)。
<DOWN>
M-n
ミニバッファ履歴中の1つつぎ(新しい)の引数文字列に移動する (next-history-element)。
M-r regexp <RET>
ミニバッファ履歴中の引数文字列を古いほうへ遡って regexpに一致するものに移動する (previous-matching-history-element)。
M-s regexp <RET>
ミニバッファ履歴中の引数文字列を新しいほうへ辿って regexpに一致するものに移動する (next-matching-history-element)。

履歴リストに保存されている引数を再利用するもっとも簡単な方法は、 履歴リストの中を1つ1つ移動していくことです。 ミニバッファの中では、1つまえ(古い)のミニバッファの入力内容に 『移動する』にはM-pprevious-history-element)を、 1つあと(新しい)の入力内容に移動するには M-nnext-history-element)を打ちます。

ミニバッファの内容は、履歴から持ってきた以前の入力内容で完全に 置き換えられます。 この内容を引数として使うには、 通常と同じように<RET>でミニバッファを抜けます。 引数として再使用するまえに、テキストを編集してもかまいません。 編集してもミニバッファに『持ってきた』履歴のもともとの要素は変更されません。 ただし、当然、新しい引数は履歴リストの最後に追加されます。

多くのミニバッファ引数には、デフォルト値があります。 ミニバッファ履歴操作コマンドが、 これらのデフォルト値を知っている場合もあります。 その場合、M-nで履歴中の『未来』へ移動する 1 ことで、このデフォルト値をテキストとしてミニバッファに挿入できます。 将来的には、ミニバッファにデフォルト値がある場合には、 つねにこの機能を利用できるようにしたいと考えています。

履歴の中を前向きや後向きに探索するコマンドもあります。 これらのコマンドは、ミニバッファで指定した正規表現に 一致する履歴要素を探索します。 M-rprevious-matching-history-element)は、 履歴のより古い要素を探します。 一方、M-snext-matching-history-element)は、 より新しい要素を探します。 特例なのですが、 これらのコマンドは、コマンドを呼び出す時点で すでにミニバッファに入っているにも関わらず、 ミニバッファから引数を読み取ります。 インクリメンタルサーチの場合と同様に、 正規表現に大文字を使うと、大文字小文字を区別して探索します (see Search Case)。

ミニバッファを使えば入力は必ず履歴リストに記録されますが、 引数の種類ごとに別々の履歴リストがあります。 たとえば、ファイル名に関する履歴リストは、 ファイル名を読み取るすべてのコマンドで使われます。 (特別な機能として、この履歴リストには、 絶対ファイル名を入力しなくても絶対ファイル名が記録される。)

特定目的用の履歴リストがいくつかあります。 M-xが読むコマンド名用、バッファ名用、 query-replaceのようなコマンドの引数用、 compileが読むコンパイルコマンド用などです。 さらに、ほとんどのミニバッファ引数が利用する 『その他』の履歴リストも1つあります。

変数history-lengthは、ミニバッファ履歴リストの最大長を指定します。 履歴リストが設定された長さに達すると、 そのあとは、新しい要素を追加するたびに最古の要素を削除します。 ただし、変数history-lengthの値がtであると、 長さの制限はなくなり要素を削除しません。


Footnotes

[1] 【訳注】履歴として残っている文字列データの 最後尾よりさらに先に移動すること。