直前の古いシェルコマンドを取得します (comint-previous-input)。
シェルコマンド履歴 (comint-complete-input-ring)
を使用して、現在の入力を補完してください。
次に取得する古いシェルコマンド (comint-next-input) を取得します。
古いシェルコマンド (comint-history-isearch-backward-regexp)
のインクリメンタルな正規表現検索を開始する。
履歴から次のコマンドを取得します (comint-get-next-from-history)。
古いシェルコマンドから引数を1つ取得する (comint-input-previous-argument)。
バッファのシェルコマンド履歴を別のウィンドウに表示します (comint-dynamic-list-input-ring)。
シェルバッファには、過去に入力したシェルコマンドの履歴が保持されます。履歴からシェルコマンドを再利用するには、編集コマンド M-p、M-n、および M-r を使用します。これらはミニバッファの履歴コマンド(ミニバッファ履歴
を参照)と同様に動作しますが、ミニバッファではなくシェルバッファ内で動作する点が異なります。また、シェルバッファ内で M-r を実行すると、シェルコマンド履歴のインクリメンタル検索が呼び出されます。
M-p は、シェルバッファの末尾にあるより古いシェルコマンドを取得します。M-p を連続して使用すると、順次より古いシェルコマンドが取得され、それぞれがシェル入力として既に存在していたテキストを置き換えます。M-n も同様に動作しますが、バッファから順次より新しいシェルコマンドを探します。C-UP は M-p と同様に、C-DOWN は M-n と同様に動作します。
C-x UP は、過去のシェルコマンドの履歴に基づいて、現在の入力を補完しようとします(Completion を参照)。例えば、以前に実行した長く複雑なシェルコマンドの最初の数単語を入力し、その後このコマンドを呼び出すことで、Emacs に残りの部分を補完させることができます。
履歴検索コマンド M-r は、過去のシェルコマンドに対するインクリメンタルな正規表現検索を開始します。M-r と入力した後、目的の文字列または正規表現の入力を開始すると、最後に一致したシェルコマンドが現在の行に表示されます。インクリメンタル検索コマンドは通常の動作を行います—例えば、C-s や C-r は、次の一致箇所を前方および後方に検索します(インクリメンタル検索 を参照)。目的の入力が見つかったら、RET と入力して検索を終了します。これにより、入力内容がコマンドラインに配置されます。履歴リストを移動する前に入力していた途中の入力内容は、履歴リングの先頭または末尾に移動した際に復元されます。
以前に連続して実行した複数のシェルコマンドを、再度実行することが有用な場合がよくあります。これを行うには、まずそのシーケンスの最初のコマンドを探して再実行します。次に C-c C-x と入力します。これにより、次のコマンド――先ほど繰り返したコマンドの直後に続くコマンド――が取得されます。その後、RET と入力してこのコマンドを再実行します。C-c C-x RET を繰り返し入力することで、連続する複数のコマンドを再実行できます。
コマンド C-c . (comint-insert-previous-argument) は、Bash の ESC . や zsh
のように、直前のコマンドから個別の引数をコピーします。最も単純な使い方では、直前のシェルコマンドの最後の引数をコピーします。接頭辞引数 n を指定すると、代わりに n 番目の引数をコピーします。C-c . を繰り返すと、より前のシェルコマンドからコピーが行われ、常に同じ n の値が使用されます(C-c .
コマンドを繰り返す際は、接頭辞引数を指定しないでください)。
comint-insert-previous-argument-from-end に nil 以外の値を設定すると、C-c . は代わりに最後から数えて
n 番目の引数をコピーします。これにより、zsh
において ESC . の動作がエミュレートされます。
これらのコマンドは、シェルバッファ自体ではなく、専用の履歴リストから直前のシェルコマンドのテキストを取得します。したがって、シェルバッファを編集したり、その大部分を削除したりしても、これらのコマンドが参照する履歴に影響はありません。
一部のシェルでは、以前のシェルセッションのコマンドを参照できるよう、コマンド履歴をファイルに保存しています。Emacsは、選択したシェルのコマンド履歴ファイルを読み込んで、自身のコマンド履歴を初期化します。履歴ファイルの名前は、shell-history-file-nameで指定された文字列です。ユーザーオプションがtの場合、コマンド履歴は読み込まれません。値がnilの場合、コマンド履歴は環境変数HISTFILEで指定されたファイルから、あるいはbashの場合は~/.bash_history、kshの場合は~/.sh_history、zshの場合は~/.zsh_history"、その他のシェルの場合は~/.historyから読み込まれます。