Emacs: icomplete vs ido mode
What's the Difference Between Icomplete and Ido?
Icomplete for All Prompts, Ido for File/Buffer Commands Only
icomplete and ido are both bundled with emacs.
icomplete does completion for any command that prompts for a list of choices.:
The emacs commands that icomplete will be active Includes:
Ido only supports file/buffer related commands:
There is no config you can set to make other commands use ido completion.
Icomplete Needs Tab ↹ Return ↩, Ido Just Return ↩
With icomplete, you have to press Tab first to “complete”, then Enter ↵, unless there is just one candidate left.
With ido, just press Enter ↵, and the first candidate will be used.
icomplete keys for choice selection:
- Ctrl+. → next choice
- Ctrl+, → previous choice
- Ctrl+j → select current choice
Arrow keys does not work.
ido keys for choice selection:
- ← → previous choice. (or 【Ctrl+,】)
- → → next choice. (or 【Ctrl+.】)
- Enter ↵ → select current choice
Icomplete: No Flex Matching
icomplete doesn't have flex matching. You have to type the first char of the name. However, it supports wildcard. For example, “*b” will list “abc”.
ido by default will match any substring. For example, typing “b” will list “abc”.
ido has ido-enable-flex-matching, so that it'll show candidates that contain the chars you typed. For example, “bd” will list “abcde”.
Icomplete: No Smart Order of Candidates
ido will list the most recently used item first.
I recommend turning on both icomplete and ido.