簡単な例を挙げると分かりやすいでしょう。M-x
はミニバッファを使用してコマンド名を読み取るため、ミニバッファ内のテキストを既存の Emacs
コマンド名と照合することで補完が機能します。例えば、auto-fill-mode
というコマンドを実行したいとします。M-x auto-fill-mode RET と入力することでも実行できますが、補完を利用する方が簡単です。
M-x a u TAB と入力すると、TAB は ‘au’
で始まる補完候補(この場合はコマンド名)を探します。auto-fill-mode や autoconf-mode などいくつか候補がありますが、いずれも auto で始まるため、ミニバッファ内の ‘au’ は ‘auto’
に補完されます。(お使いの Emacs セッションでは、さらに多くのコマンドが定義されている場合があります。例えば、authorize-me というコマンドが定義されていた場合、Emacs は ‘aut’ までしか補完できません。)
続けてすぐに TAB と入力すると、次の文字を判定できません。‘-’、‘a’、あるいは ‘c’ のいずれかになる可能性があるためです。そのため、文字は追加されず、代わりに TAB が別のウィンドウに考えられるすべての補完候補の一覧を表示します。
次に -f と入力します。ミニバッファには ‘auto-f’ が表示され、これで始まるコマンド名は auto-fill-mode だけです。ここで TAB と入力すると、補完機能が引数の残りの部分 ‘auto-fill-mode’ をミニバッファに入力します。
したがって、a u TAB - f TAB と入力するだけで ‘auto-fill-mode’ と入力できます。
TAB も、ポイントがミニバッファの末尾にない限り有効です。その場合、ポイントとミニバッファの末尾の両方にテキストが挿入されます。M-x autocm と入力し、C-b を押してポイントを ‘m’ の前に移動させた後、TAB と入力すれば、ポイントに ‘onf-’、ミニバッファの末尾に ‘ode’ というテキストが挿入され、ミニバッファには ‘autoconf-mode’ が含まれるようになります。