Emacs: icomplete vs ido mode

Master emacs+lisp, benefit for life. Testimonials. Thank you for support.

this page describes the difference between icomplete-mode and ido-mode. If you don't know what ido does, see: Emacs: Switch Buffers, Ido Tutorial.

What's the Difference Between Icomplete and Ido?

Icomplete for All Prompts, Ido Only for File

emacs icomplete describe-function 2014-06-11
emacs describe-function with icomplete-mode on.

icomplete and ido are both bundled with emacs.

icomplete provides basic automatic completion. It does auto completion for any command that prompts for a list of completions. Including:

Ido is only for files (for find-file and switch-to-buffer), as of . There is no config you can set to make other commands use ido completion. (there are external packages that make ido do for other things. “smex” for M-x, and “ido-ubiquitous” for others.)

emacs ido-find-file 2014-06-11
emacs ido-find-file

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: No Navigation of Candidates

with icomplete, you cannot navigate among candidates. The only way is to type more characters and press tab until there is just one candidate left.

with ido, you can choose different candidates by pressing {, } (or {【Ctrl+r】, 【Ctrl+s】})

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.


ido is written by Kim F Storm. Ido started in 1996. Kim is also author of cua-mode. (cua started in 1997) Kim's home page is http://www.cua.dk/index.html.

ido is based on iswitchb-mode by Stephen Eglen. iswitchb started in 1996. Stephen's home page is http://www.damtp.cam.ac.uk/user/eglen/. Stephen's emacs page http://www.damtp.cam.ac.uk/user/sje30/emacs/

icomplete is written by Ken Manheimer, first released in 1993. (Ken Manheimer's home page: http://myriadicity.net/ , https://twitter.com/myriadicity)

What's the Difference Between iswitchb and ido mode?

See: Emacs: iswitchb vs ido mode.

Like what you read?
Buy Xah Emacs Tutorial
or share some
blog comments powered by Disqus