次へ: 補完候補の選び方, 前へ: 補完コマンド, 上へ: 補完 [目次][索引]
10.4.3 完了終了
¶
コマンドが補完機能を用いてミニバッファから引数を読み取る際、引数を送信するために RET (minibuffer-complete-and-exit)
と入力したときに何が起こるかも制御します。動作には4つのパターンがあります:
- 厳密補完は、完全一致する補完候補のみを受け付けます。RET
と入力すると、ミニバッファのテキストが完全一致するか、あるいは完全一致する候補に補完された場合にのみ、ミニバッファを終了します。それ以外の場合、Emacs
はミニバッファを終了せず、代わりに補完を試みます。補完が行えない場合は、ミニバッファのテキストの後に一時的に ‘[No match]’ が表示されます。(C-g
と入力してコマンドをキャンセルすれば、引き続きミニバッファを終了できます。)
この挙動を利用したコマンドの例として M-x
が挙げられます。存在しないコマンド名を受け付けても意味がないためです。
- 慎重な補完は厳格な補完と同様ですが、RET
はテキストがすでに完全一致している場合にのみ終了します。テキストが完全一致に補完された場合、RET
はその補完を実行しますが、まだ終了しません。終了するには、2つ目の RET を入力する必要があります。
慎重な完了処理は、例えば、既に存在していなければならないファイルのファイル名を読み取る際に使用されます。
- 許容型補完ではあらゆる入力が可能であり、補完候補はあくまで提案に過ぎません。RET と入力しても補完は行われず、入力した通りの引数がそのまま送信されます。
- 確認付き許容補完は、許容補完と同様ですが、一点だけ例外があります。TAB
と入力し、テキストがある中間状態(つまり、まだ完全な補完結果となっていない状態)まで補完された場合、その直後に RET と入力しても引数は送信されません。代わりに、Emacs はテキストの後に一時的に ‘[Confirm]’ を表示して確認を求めます。再度 RET と入力して確認し、テキストを送信してください。これにより、TAB が期待通りに補完されなかったことに気づく前に RET
と入力してしまうという、よくあるミスを防ぐことができます。
変数 confirm-nonexistent-file-or-buffer
をカスタマイズすることで、確認動作を調整できます。デフォルト値の after-completion
では、先ほど説明した動作になります。これを nil に変更すると、Emacs
は確認を求めず、許容的な補完にフォールバックします。nil 以外の値に変更すると、直前のコマンドが
TAB であったかどうかにかかわらず、Emacs は確認を求めます。
この動作は、C-x C-f のようなファイル名を読み込むほとんどのコマンドや、C-x b のようなバッファ名を読み込むコマンドで使用されています。