EmacsのWindowの一番下にある行がミニバッファと呼ばれる。ここでEmacsとユーザーの情報交換が行われる。Emacsコマンドが必要とするファイル名、バッファ名、Emacsコマンド名、Lisp式といった、複雑な引数を入力するのだ。その名のとおり、バッファに対して行えるコマンドをここでも使うことができる。つまり引数の編集を行えるのだ。
5.1 ミニバッファを使う
ミニバッファに入力するに当たっては通常、コロンが最後に付いたプロンプト(prompt)に続いて行います。プロンプトはどのような入力が期待されるか、どのように使われるのかを示しています。
RETで入力の終了です。
C-gでコマンドのキャンセルとなります。
デフォルト値が括弧内に表示しているプロンプトへRETだけ入力すれば、デフォルト値で動作します。
ミニバッファ使用中でも、他のフレームへ移動することができる。要注意だ。
5.2 ミニバッファでのファイル名
C-x C-fコマンドなどの場合、ミニバッファでファイル名を入力する。この際通常は下記のようにデフォルトディレクトリーが表示されている。
Find File: /u2/emacs/src/buffer.c
赤文字の部分を入力することで簡単になるわけだ。
これを考えると、プロジェクトのソースの場所へ移動してからemacs&したほうがよいのかもしれないね。ディレクトリを移動するにはどうするんだか。
5.3 ミニバッファでの編集
ミニバッファ内での編集作業はプロンプト部分以外で行えます。プロンプト部分はread-onlyです。
RETは引数を完了させるので、改行には使えません。改行が欲しい場合にはC-q C-jで入力できます。また、C-oでもよいでしょう。行が増えたらミニバッファも広がります。
TAB、SPC、?が補完コマンドにバインドされている場合は使用できます。
そうはしないという指定も出来ますよ。
5.4 補完
TAB、RET、SPCなどがミニバッファの特別な補完コマンドにリバインドされている。
?を入力すると、補完候補の一覧が表示される。
5.4.1 補完の例
例の補完操作ですね。
5.4.2 補完コマンド
省略します。
5.4.3 補完の終了
補完の後RETを入力すると、必要性によってその入力完了判断がことなる。
- 強い補完 M-xはコマンド名が存在していることを要求します。存在しないコマンド名は受け取れない。
- 慎重な補完 テキストが正確にマッチしている時RET2回でexit。存在しなければならないファイル名など。
- 確認付きの寛大な補完 補完途中でRET入力の際、'[Confirm]’をテキストの後ろに数秒間表示する。更にRETでexit。
5.4.4 補完候補が選択される方法
省略
5.4.5 補完オプション
省略
5.5 ミニバッファヒストリー
ミニバッファに入力された内容はミニバッファヒストリーリストに記録されている。
コマンド | 説明 |
M-p | 前のアイテムに移動する。 |
M-n | 次のアイテムに移動する。 |
UP↑ DOWN↓ | M-p,M-nと同様ですが、前のアイテムに移動する前に、 複数行アイテムの前、または次の行に移動します。 |
M-r regexp RET | regexpにマッチする以前のアイテムに移動する。 |
M-s regexp RET | regexpにマッチする以降のアイテムに移動する。 |
5.6 ミニバッファでのコマンドの繰り返し
ミニバッファを使用したコマンドもコマンドヒストリーに記録されている。
コマンド | 説明 |
C-x ESC ESC | 最近のミニバッファのコマンドを再実行。 |
M-x list-command-history | コマンドヒストリー全体を表示。最近が先頭。 表示されたコマンドはC-x ESC ESCで再実行可。 |
C-x ESC ESCコマンドには数引数で再実行するコマンドを指定する。無ければ最近。
5.7 パスワードの入力
パスワード入力はプロンプトの後ろに行います。
入力した文字が*に置き換えられます。
編集機能は使えませんが、DEL、C-uは使えます。
パスワード入力を確定するにはRET、ESCを入力します。
パスワード入力中には各種の機能は使えなくなります。
5.8 Yes or Noプロンプト
処理の途中でこういう風に聞かれることは多い。
聞き方に2つのタイプがある。
No | 説明 | 例題 |
1 | y,nをタイプして続行 | File foo.el exists; overwrite? (y or n) 上書きの確認。 |
2 | yes,noとタイプしてRET 間違うと深刻 | Buffer foo.el modified; kill anyway? (yes or no) バッファの中身を保存しないで消すかどうかを確認。 |
コメント