Icompleteモードを使用すると、ミニバッファ内の候補の中から要素を素早く選択できます。このモードを有効にすると、ミニバッファで入力を続けるたびに、入力した文字列に一致する候補の一覧が順次表示されます。
いつでも C-j と入力することで、リスト内の最初の補完項目を選択できます。つまり、特定の補完項目を選択するには、それをリストの先頭に持ってくればよいということです。これには2つの方法があります。補完項目名をさらに入力してリストを絞り込み、目的の項目より上にある不要な補完項目を除外する方法です。あるいは、C-. や C-, を使ってリストを回転させ、目的のバッファを先頭に持ってくる方法もあります。
M-TAB は C-j と同様にリスト内の最初の補完項目を選択しますが、ミニバッファを離脱しないため、さらに編集を加えることができます。これは通常、ファイル名を入力する際に使用され、M-TAB を数回使うことでディレクトリ階層を辿ることができます。
ミニバッファで Icomplete モードを有効にするには、M-x icomplete-mode
と入力するか、変数 icomplete-mode を t にカスタマイズしてください(Easy Customization Interface を参照)。
また、変数 icomplete-in-buffer を t にカスタマイズすることで、C-M-i に対しても
Icomplete モード(コマンド completion-at-point)を有効にできます。バッファ内での補完では、変数 completion-auto-help によって Icomplete
モードの候補表示が表示されるタイミングが制御されます。t のデフォルト値では、最初に C-M-i と入力した際に候補表示が現れます。
デフォルトでは、C-M-i を押すと、Icomplete モードの両方における補完候補のバッファ内表示と
*Completions* バッファが表示されます。icomplete-in-buffer を使用している場合、この *Completions*
バッファの表示を抑制したいこともあるでしょう。その場合は、初期化ファイルに以下を追加してください(Emacs 初期化ファイル を参照):
(advice-add 'completion-at-point :after #'minibuffer-hide-completions)
Icompleteモードの代替手段として、Fidoモードがあります。これはIcompleteモードと非常に似ていますが、Idoモードという人気の拡張機能の機能の一部を継承しています(実際、その名称は「Fake
Ido」に由来しています)。Fidoモードでは、とりわけC-sとC-rが補完リストの切り替えに使用され、C-kでファイルの削除やリスト内のバッファの終了が可能です。もう一つの特筆すべき点は、flexがデフォルトの補完スタイルとして使用されていることです(補完の代替手段の選び方を参照)。これを変更するには、初期化ファイルに以下を追加してください(Emacs初期化ファイルを参照):
(defun my-icomplete-styles () (setq-local completion-styles '(initials flex))) (add-hook 'icomplete-minibuffer-setup-hook 'my-icomplete-styles)
Fidoモードを有効にするには、M-x fido-modeと入力するか、変数fido-modeをtにカスタマイズしてください(簡単カスタマイズインターフェースを参照)。
IcompleteモードおよびFidoモードでは、デフォルトで補完候補がプロンプトと同じ行に表示されます。補完候補をプロンプトの下に縦方向に表示するには、M-x icomplete-vertical-modeと入力するか、変数icomplete-vertical-modeをtにカスタマイズしてください(Easy Customization Interfaceを参照)。