[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

27.14.3 シェルモード(Shellモード)

シェルバッファではシェル(shell)モードが使われ、 プレフィックスキーC-cを持つ特別なキーをいくつか定義しています。 これらは、まずC-cを打つことを除けば、 Emacsの外でシェルを使うときの通常のコマンド行編集や ジョブ制御のキーに似せて定義してあります。 以下は、シェル(shell)モードでの特別なバインディングの一覧です。

RET
バッファの末尾で打つと、1行分を入力としてシェルに送る。 バッファの末尾以外では、現在行をバッファの末尾にコピーしてから、 それを入力としてシェルに送る(comint-send-input)。 行をコピーするとき、行の先頭部分の文字列で 変数shell-prompt-patternに一致する部分はコピーしない。 この変数の値は、ユーザーのシェルがプロンプトとして用いる 文字列に一致する正規表現であること。

TAB
シェルバッファでポイントの直前にあるコマンド名やファイル名を補完する (comint-dynamic-complete)。 TABは、履歴参照(see section 27.14.4.3 シェル履歴の参照)や 環境変数名も補完できる。

変数shell-completion-fignoreには、 シェル(shell)モードでの補完において 無視したいファイル名の拡張子のリストを指定する。 デフォルトの設定では、名前が、`~'`#'`%'で 終るファイルを無視する。 関連する他のcomintモードではかわりに 変数comint-completion-fignoreを使う。

M-?
シェルバッファのポイントの直前にあるファイル名の可能な補完内容を 一時的に表示する(comint-dynamic-list-filename-completions)。

C-d
文字を削除するか、または、 EOFを送る(comint-delchar-or-maybe-eof)。 シェルバッファの末尾でC-dを打つとサブシェルにEOFを送る。 バッファのそれ以外の位置では、C-dを打つと通常どおり1文字削除する。

C-c C-a
行の先頭に行く。 ただし、プロンプトがある場合にはプロンプトの直後に行く (comint-bol)。 同じ行でこのコマンドを2回繰り返すと、2回目ではプロセスマークへ戻る。 プロセスマークとは、サブシェルへまだ送っていない入力の開始位置のこと。 (通常、これは同じ場所であり、 プロセスマークはその行のプロンプトの終りにある。 ただし、C-c SPCのあとでは、 プロセスマークはまえの行にあるかもしれない。)

C-c SPC
複数の入力行を溜めておき、まとめて送る。 このコマンドは、ポイントのまえに改行を挿入するが、 少なくともまだ、その行を入力としてサブシェルへ送らない。 RETを打つと、 改行のまえの1行とあとの1行を(区切りの改行を含めて)まとめて送る。

C-c C-u
バッファの末尾にある、まだシェルに送っていないテキストをすべてキルする (comint-kill-input)。

C-c C-w
ポイントの直前の1語をキルする(backward-kill-word)。

C-c C-c
シェル、または、あればサブジョブに割り込む (comint-interrupt-subjob)。 また、このコマンドは シェルバッファ内のまだシェルに送っていないテキストもキルする。

C-c C-z
シェル、または、あればサブジョブを中断する (comint-stop-subjob)。 また、このコマンドは シェルバッファ内のまだシェルに送っていないテキストもキルする。

C-c C-\
シェル、または、あればサブジョブにシグナルQUITを送る (comint-quit-subjob)。 また、このコマンドは シェルバッファ内のまだシェルに送っていないテキストもキルする。

C-c C-o
直前のシェルコマンドからのひとまとまりの出力をキルする (comint-kill-output)。 シェルコマンドが大量の出力を出してしまったときなどに有効。

C-c C-r
C-M-l
直前のひとまとまりの出力がウィンドウの先頭にくるようにスクロールする。 また、ポイントもそこへ動かす(comint-show-output)。

C-c C-e
バッファの末尾がウィンドウの下端にくるようにスクロールする (comint-show-maximum-output)。

C-c C-f
シェルコマンド1つ分だけ先へ進めるが、現在行の末尾より先へはいかない (shell-forward-command)。 変数shell-command-regexpには、 シェルコマンドの終りの探し方(正規表現)を指定する。

C-c C-b
シェルコマンド1つ分だけ手前へ戻るが、現在行の先頭よりまえへはいかない (shell-backward-command)。

C-c C-l
バッファのシェルコマンド履歴を別のウィンドウに表示する (comint-dynamic-list-input-ring)。

M-x dirs
シェルにカレントディレクトリを問い合わせ、 Emacs側のものをシェルに合わせる。

M-x send-invisible RET text RET
textをエコーバックせずに読み取り、 入力としてシェルへ送る。 パスワードを問い合わせるようなプログラムを起動する シェルコマンドで役立つ。

かわりに、つぎのようにして、 Emacsにパスワードプロンプトを認識させてエコーバックを抑制する方法もある。

 
(add-hook 'comint-output-filter-functions
          'comint-watch-for-password-prompt)

M-x comint-continue-subjob
シェルプロセスを継続させる。 これはまちがってシェルプロセスを休止させてしまった場合に役立つ。 (53)

M-x comint-strip-ctrl-m
現在の一群のシェルの出力から復帰(コントロールM)文字を削除する。 このコマンドのもっとも便利な使い方の1つは、 サブシェルの出力を受け取ると自動的にこのコマンドが実行されるように 設定しておくことである。 そのためには、つぎのLisp式を評価すればよい。

 
(add-hook 'comint-output-filter-functions
          'comint-strip-ctrl-m)

M-x comint-truncate-buffer
このコマンドは、変数comint-buffer-maximum-sizeで指定した大きさに シェルバッファの行数を切り詰める。 サブシェルから出力を受け取るたびに これを自動的に行うにはつぎのようにする。

 
(add-hook 'comint-output-filter-functions
          'comint-truncate-buffer)

シェル(shell)モードでは段落コマンドにも修正を加えてあり、 シェルプロンプトでのみ新しい段落が始まるようになっています。 つまり、シェルバッファでは、 1つの段落はシェルコマンドとその出力から成るのです。

シェル(shell)モードは、対話的なサブプロセスと通信するための汎用モードである comintモードからの派生です。 ここまでにあげてきたコマンドの名前からもわかるように、 シェル(shell)モードの数多くの機能は、実は、comintモードからきています。 シェル(shell)モードに固有な特別な機能は、正規表現に基づくプロンプトの認識、 カレントディレクトリの追跡、および、少数のユーザーコマンドに限られます。

comintモードから派生したEmacsのほかの機能としては、 GUD(see section 21.5 Emacs下でのデバッガの実行)と M-x run-lisp(see section 21.10 外部Lispの実行)があります。

M-x comint-runを使うと、 シェル(shell)モード固有の機能を持たないcomintモードで、 任意のプログラムをサブプロセスとして実行できます。



This document was generated by Takeshi Sasaoka on , 21 2002 using texi2html