A simple example may help here.
M-x uses the minibuffer to read the name of a command, so completion works by matching the minibuffer text against the names of existing Emacs commands. Suppose you wish to run the command
auto-fill-mode. You can do that by typing
M-x auto-fill-mode RET, but it is easier to use completion.
If you type
M-x a u TAB, the
TAB looks for completion alternatives (in this case, command names) that start with ‘
au’. There are several, including
autoconf-mode, but they all begin with
auto, so the ‘
au’ in the minibuffer completes to ‘
auto’. (More commands may be defined in your Emacs session. For example, if a command called
authorize-me was defined, Emacs could only complete as far as ‘
If you type
TAB again immediately, it cannot determine the next character; it could be ‘
a’, or ‘
c’. So it does not add any characters; instead,
TAB displays a list of all possible completions in another window.
-f. The minibuffer now contains ‘
auto-f’, and the only command name that starts with this is
auto-fill-mode. If you now type
TAB, completion fills in the rest of the argument ‘
auto-fill-mode’ into the minibuffer.
Hence, typing just
a u TAB - f TAB allows you to enter ‘