ほとんどの点において、ミニバッファは通常のEmacsバッファです。編集コマンドなど、バッファ内での操作の多くは、ミニバッファでも通常通り動作します。しかし、バッファ管理に関する多くの操作は、ミニバッファには適用されません。ミニバッファの名称は常に‘ *Minibuf-number*’という形式であり、変更することはできません。ミニバッファは、ミニバッファ専用の特殊なウィンドウにのみ表示され、これらのウィンドウは常にフレームの下部に現れます。(フレームにミニバッファウィンドウがない場合もあれば、特殊な種類のフレームがミニバッファウィンドウのみで構成されている場合もあります。ミニバッファとフレームを参照してください。)
ミニバッファ内のテキストは、常にプロンプト文字列、つまりミニバッファを使用しているプログラムが、ユーザーにどのような入力を行うべきかを伝えるために指定したテキストから始まります。このテキストは読み取り専用としてマークされているため、誤って削除したり変更したりすることはありません。また、フィールドとしてもマークされており(フィールドの定義と使用を参照)、beginning-of-line、forward-word、forward-sentence、forward-paragraphを含む特定の移動関数は、プロンプトと実際のテキストの境界で停止します。
ミニバッファのウィンドウは通常1行ですが、内容によってより多くのスペースが必要になると自動的に拡大します。ミニバッファがアクティブな間は、ウィンドウサイズ変更コマンドを使用して、そのウィンドウを一時的に明示的にリサイズできます。ミニバッファを終了すると、ウィンドウは通常のサイズに戻ります。ミニバッファがアクティブでないときは、フレームの別のウィンドウでウィンドウサイズ変更コマンドを使用するか、マウスでモードラインをドラッグすることで、ウィンドウを恒久的にリサイズできます。(現在の実装の仕様により、これが機能するには
resize-mini-windows が nil
である必要があります。)フレームにミニバッファウィンドウのみが含まれている場合は、フレームのサイズを変更することでそのサイズを変更できます。
ミニバッファを使用すると入力イベントが読み取られ、それによって this-command や
last-command といった変数の値が変化します(コマンドループからの情報を参照)。これらの値の変化を避けたい場合は、ミニバッファを使用するコードの周辺でこれらの変数をバインドしてください。
状況によっては、アクティブなミニバッファが存在する場合でも、コマンドがミニバッファを使用することがあります。このようなミニバッファを再帰的ミニバッファと呼びます。最初のミニバッファは‘ *Minibuf-1*’と名付けられます。再帰的ミニバッファは、名前の末尾の数値をインクリメントすることで命名されます。(名前の先頭にスペースを付けることで、通常のバッファリストに表示されないようにしています。)複数の再帰的ミニバッファのうち、最も内側にあるもの(または直近で入力されたもの)がアクティブなミニバッファであり、RET (exit-minibuffer) と入力することで終了させることができます。通常、これをそのミニバッファと呼びます。変数enable-recursive-minibuffersを設定するか、あるいはコマンドシンボルにその名前のプロパティを付与することで、再帰的ミニバッファを許可または禁止できます(再帰的ミニバッファを参照)。
他のバッファと同様に、ミニバッファではローカルキーマップ(キーマップを参照)を使用して、特殊なキーバインドを指定します。ミニバッファを呼び出す関数は、実行される処理に応じてローカルマップも設定します。補完機能を持たないミニバッファのローカルマップについては、ミニバッファによるテキスト文字列の読み取りを参照してください。補完用のミニバッファローカルマップについては、補完を行うミニバッファコマンドを参照してください。
アクティブなミニバッファのメジャーモードは、通常 minibuffer-mode
です。これは特別な機能を持たない Emacs の内部モードです。ミニバッファの設定をカスタマイズするには、minibuffer-mode-hook ではなく minibuffer-setup-hook(ミニバッファの諸事項
を参照)の使用をお勧めします。前者は、ミニバッファが完全に初期化された後に実行されるためです。
ミニバッファが非アクティブな場合、そのメジャーモードは minibuffer-inactive-mode、キーマップは minibuffer-inactive-mode-map
となります。これが実際に有用なのは、ミニバッファが別フレームにある場合に限られます。ミニバッファとフレームを参照してください。
Emacsをバッチモードで実行している場合、ミニバッファからの読み込み要求は、実際にはEmacs起動時に指定された標準入力ディスクリプタから1行を読み出します。これは基本的な入力のみをサポートしており、ミニバッファの特殊な機能(履歴、補完など)はバッチモードでは利用できません。