Next: , Up: Shellコマンドヒストリー   [Contents][Index]


39.5.1 Shellヒストリーリング

M-p
C-UP

以前のシェルコマンドから、次に古いコマンドを取り出します(comint-previous-input)。

M-n
C-DOWN

以前のシェルコマンドから、次に新しいコマンドを取り出します(comint-next-input)。

M-r

以前のシェルコマンドにたいして、インクリメンタルregexp検索を開始します(comint-history-isearch-backward-regexp)。

C-c C-x

ヒストリーから次のコマンドを取り出します(comint-get-next-from-history)。

C-c .

以前のシェルコマンドから引数を1つ取り出します(comint-input-previous-argument)。

C-c C-l

そのバッファーのシェルコマンドのヒストリーを、別のウィンドウに表示します(comint-dynamic-list-input-ring)。

Shellバッファーは、以前に入力したシェルコマンドのヒストリーを提供します。ヒストリーからシェルコマンドを再利用するには、編集コマンドM-pM-nM-rを使用します。これらは、ミニバッファーではなくShellバッファーを操作する点を除き、ミニバッファーヒストリーコマンド(ミニバッファーヒストリーを参照してください)と同じように機能します。またShellバッファー内でのM-rは、シェルコマンドヒストリーにたいするインクリメンタル検索を呼び出します。

M-pは、シェルバッファーの最後から以前のシェルコマンドを取り出します。連続してM-pを使用すると、古いシェルコマンドを連続して取り出し、その度にシェル入力の候補として表示されているテキストを置き換えます。M-nも同様に機能しますが、これはバッファーから、より新しいシェルコマンドを連続して探します。C-UPM-pと同様に機能し、C-DOWNM-nと同様に機能します。

ヒストリー検索コマンドM-rは、以前のシェルコマンドにたいしてインクリメンタル正規表現検索を開始します。M-rとタイプした後に、検索したい文字列か正規表現のタイプを開始します。するとマッチする最後のシェルコマンドがカレント行に表示されます。インクリメンタル検索コマンドは通常の効果をもちます — たとえばC-sおよびC-rは前方または後方に、次のマッチを検索します(インクリメンタル検索を参照してください)。探している入力が見つかったら、検索を終了するためにRETをタイプします。これにより、入力がコマンドラインに配されます。ヒストリーリストを操作する前にタイプしていた入力の一部は、ヒストリーリングの先頭または最後に達したときに復元されます。

以前に実行した一連のシェルコマンドを、同じ順番で再実行できたら便利なこともあります。これを行なうには、最初に順番に再実行する1番目のコマンドを検索します。その後C-c C-xとタイプします。これは次のコマンド — つまり再実行したコマンドの次のコマンドを取り出します。それからRETでそのコマンドを実行します。C-c C-x RETを繰り返しタイプすることにより、連続する複数のコマンドを再実行することができます。

コマンドC-c . (comint-insert-previous-argument)は、BashのESC .のように、以前のコマンドから個別に引数をコピーします。一番簡単な使い方は、以前のシェルコマンドから最後の引数をコピーする方法です。プレフィクス引数nを指定すると、n番目の引数をコピーします。繰り返しC-c .とタイプすることにより、さらに古いシェルコマンドからコピーします。この場合、常に同じnの値を使用します(C-c .を繰り返すときは、プレフィクス引数を与えないでください)。

comint-insert-previous-argument-from-endを非nil値にセットすると、C-c .はかわりに最後から数えてn番目の引数をコピーします。これはzshESC .をエミュレートしたものです。

これらのコマンドは、以前のシェルコマンドのテキストを、シェルバッファー自身からではなく、特別なヒストリーリストから取得します。したがってシェルバッファーを編集したり、広い範囲をkillしても、これらのコマンドがアクセスするヒストリーに影響はありません。

シェルの中には、コマンドヒストリーをファイルに保存して、以前のシェルセッションからコマンドを参照できるようにするものがあります。Emacsは選択されたシェルにたいして、コマンドヒストリーを初期化するために、コマンドヒストリーファイルを読み込みます。ヒストリーファイル名は、bashでは~/.bash_history、kshでは~/.sh_history、他のシェルでは~/.historyです。

リモートホストでシェルを実行した場合には、このセッティングは変数tramp-histfile-overrideに上書きされるかもしれません。この変数はnilにセットすることを推奨します。