GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Shell-Prompts.html ・ emacs-doc.conao3.com

40.4 シェルプロンプト

プロンプトとは、プログラムが新しいユーザー入力を受け付ける準備ができていることを示すために出力するテキストのことです。通常、Comintモード(ひいてはShellモード)は、サブプロセスの出力に基づいて、バッファのどの部分がプロンプトであるかを自動的に判別します。(具体的には、改行で終わっていない受信出力行はすべてプロンプトであるとみなします。)

Comintモードでは、バッファが2種類のフィールド、すなわち入力フィールド(ユーザー入力が入力される場所)と出力フィールド(それ以外のすべての場所)に分割されます。プロンプトは出力フィールドの一部です。ほとんどのEmacsモーションコマンドは、複数行にわたって移動する場合を除き、フィールドの境界をまたぐことはありません。例えば、シェルコマンドラインの入力フィールドにポイントがある場合、C-aはプロンプトの後、つまり入力フィールドの先頭にポイントを移動させます。内部的には、フィールドはfieldテキストプロパティを用いて実装されています(Emacs Lisp Reference Manualのテキストプロパティを参照してください)。

変数 comint-use-prompt-regexp を nil 以外の値に変更すると、Comint モードでは正規表現を用いてプロンプトを認識するようになります(正規表現の構文 を参照)。Shell モードでは、正規表現は変数 shell-prompt-pattern で指定されます。プロンプト認識のこの手法は信頼性に欠けるため、comint-use-prompt-regexp のデフォルト値は nil となっていますが、特殊な状況では nil 以外の値に設定したい場合もあるでしょう。その場合、Emacs は Comint バッファをフィールドに分割しないため、一般的な移動コマンドは、特別なテキストプロパティを持たないバッファと同様に動作します。ただし、段落移動コマンドを使用すればバッファ内を便利に移動できます(段落 を参照)。Shell モードでは、Emacs は shell-prompt-pattern を段落の境界として使用します。