Next: , Previous: , Up: Shell   [Contents][Index]


40.4 Shellプロンプト

プロンプトとは、新しいユーザー入力を受け取る準備ができたことを表す、プログラムによるテキスト出力のことです。Comintモード(したがってShellモードも)は通常、サブプロセスからの出力にもとづいて、バッファーの一部をプロンプトとして自動的に判断します(具体的には、改行で終端されていない任意の出力行を受け取ったときは、プロンプトとみなします)。

Comintモードは、バッファーを2つのタイプのフィールド(fields)に分けます。1つは入力フィールド(ユーザーの入力がタイプされるところ)で、もう1つは出力フィールド(入力フィールド以外)です。プロンプトは出力フィールドの一部です。ほとんどのEmacs移動コマンドは、そのコマンドが複数行を移動しない限り、フィールド境界を超えることはありません。たとえば、ポイントがシェルコマンドの入力フィールドにある場合、C-aはポイントを入力フィールドの先頭、プロンプトの後に配します。内部的には、フィールドはテキストプロパティーfieldを使って実装されています(Text Properties in the Emacs Lisp Reference Manualを参照してください)。

変数comint-use-prompt-regexpを非nil値に変更した場合、Comintモードは正規表現を使ってプロンプトを認識します(Regexpsを参照してください)。Shellモードでは、その正規表現は変数shell-prompt-patternにより指定されます。comint-use-prompt-regexpのデフォルト値はnilです。なぜならプロンプト認識のためのこの方法は信頼性が低いためです。しかし特殊な状況では、これを非nil値にセットしたいと思うこともあるでしょう。そのような場合、EmacsはComintバッファーをフィールドに分割しないので、一般的な移動コマンドは、テキストプロパティーを使用せず、それらのコマンドがバッファーで通常行なうように振る舞います。しかし、バッファーを便利に操作するために、パラグラフ移動コマンドを使うことができます(Paragraphsを参照してください)。Shellモードでは、Emacsはパラグラフ境界にshell-prompt-patternを使用します。