ミニバッファはEmacsのバッファですが、少々特殊なものであり、引数テキストの編集には通常のEmacsコマンドが利用可能です。(ただし、プロンプトは読み取り専用であり、変更することはできません。)
ミニバッファの RET は引数を送信するため、これを使って改行を挿入することはできません。改行の挿入には
C-q C-j を使用できます。これにより C-j
制御文字が挿入されますが、これは形式上、改行文字と同等です(テキストの挿入 を参照)。あるいは、C-o
(open-line) コマンドを使用することもできます(空行 を参照)。
ミニバッファ内では、キー TAB、SPC、? に 補完コマンド が割り当てられていることが多く、これらを使えば、目的のテキストをすべて入力することなく、簡単に補完できます。補完 を参照してください。RET と同様に、C-q を使用して TAB、SPC、または ‘?’ 文字を挿入できます。SPC と ? を補完の開始ではなく、通常通りに挿入させたい場合は、init ファイルに以下を記述してください:
(keymap-unset minibuffer-local-completion-map "SPC") (keymap-unset minibuffer-local-completion-map "?")
利便性のため、ミニバッファ内の C-a (move-beginning-of-line)
は、ポイントをプロンプトの先頭ではなく、引数テキストの先頭に移動させます。例えば、これにより C-a
C-k で引数全体を消去できます。
ミニバッファがアクティブなとき、エコーエリアは通常のEmacsウィンドウとほぼ同様に扱われます。例えば、別のウィンドウに切り替え(C-x oを使用)、そこでテキストを編集し、その後ミニバッファウィンドウに戻って引数を完成させることができます。さらに、別のウィンドウでテキストをキルし、ミニバッファウィンドウに戻って、そのテキストを引数にヤンクすることさえ可能です。ただし、ミニバッファウィンドウにはいくつかの制限があります。例えば、分割することはできません。複数のウィンドウを参照してください。
通常、ミニバッファウィンドウは1画面行分を占有します。しかし、ミニバッファに2行分以上のテキストを追加すると、テキストに合わせて自動的に拡大されます。変数
resize-mini-windows はミニバッファのサイズ変更を制御します。デフォルト値は
grow-only で、これは先ほど説明した動作を意味します。値が t
の場合、ミニバッファから数行分のテキストを削除すると、ミニバッファウィンドウも自動的に縮小され、最小で1画面行分になります。値が nil
の場合、ミニバッファウィンドウのサイズは自動的に変更されませんが、通常のウィンドウサイズ変更コマンドを使用できます(複数のウィンドウ を参照)。
変数 max-mini-window-height
は、ミニバッファウィンドウのリサイズ時の最大高さを制御します。浮動小数点数はフレーム高さに対する割合を指定し、整数は最大行数を指定します。nil は、ミニバッファウィンドウを自動的にリサイズしないことを意味します。デフォルト値は 0.25 です。
ミニバッファの C-M-v コマンドを使用すると、何らかのヘルプテキストを表示するコマンドのヘルプテキストが、別のウィンドウにスクロール表示されます。また、M-PageUp や M-PageDown(あるいは同等に M-prior や M-next)でもヘルプテキストをスクロールできます。これは、補完候補のリストが長い場合に特に便利です。他のウィンドウの使用 を参照してください。
Emacsでは通常、ミニバッファがアクティブな間は、ミニバッファを使用するほとんどのコマンドが禁止されています。ミニバッファ内でこうしたコマンドを許可するには、変数
enable-recursive-minibuffers に t
を設定してください。また、ミニバッファを再帰的に使用する際に、ミニバッファプロンプトに現在の再帰深度を表示させるには、minibuffer-depth-indicate-mode を有効にする必要がある場合があります。
アクティブなとき、ミニバッファは通常 minibuffer-mode
にあります。これは特別な機能を持たない Emacs の内部モードです。
アクティブでないとき、ミニバッファは minibuffer-inactive-mode
にあり、そこで mouse-1 をクリックすると *Messages* バッファが表示されます。ミニバッファ専用のフレームを使用している場合、Emacs
はそこでも特定のキー(例えば新しいフレームを作成する n など)を認識します。