38

I'm a recent convert from bash to zsh (which I'm using "oh my zsh" with), but one thing annoys me:

When I hit the tab key, the first autocompletion is filled out automatically, and you need to cycle through the completions by hitting tab repeatedly.

This differs from bash, where you are just shown a list of the completions. If all completions have the same prefix, then this prefix is filled out. You can select the one you want by continuing to type.

I find the latter preferable since it is faster to type, than to select a completion by hitting tab repeatedly.

Is there any way to make zsh completion act more like bash in this regard?

0

2 Answers 2

34
setopt noautomenu setopt nomenucomplete 

You need both of them. If you hit tab enough times, you'll get the list of completions but it will never add any characters to what you've typed so far.

1
  • 2
    IMO setopt noautomenu is the change that makes zsh more like bash, while setopt nomenucomplete actually removes functionality that is standard in bash Commented Mar 27, 2024 at 14:57
8

I don't think that's the default behavior, but you can turn it off by using:

setopt +o menucomplete 

Other settings that affect this behavior in different ways include: autolist, automenu, bashautolist, listambiguous. See the "Completion" section of man zshoptions for details. You can add this command to your ~/.zshrc file.

You can configure many other things interactively by doing:

autoload -U compinstall compinstall 

and following the prompts and menus.

In Bash, this behavior is controlled by binding Tab to complete or menu-complete in ~/.inputrc:

"\C-i": complete # do list completion 

or from a shell prompt or in ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion 
2
  • 3
    meta comment: how did you get the "tab" character to look like that? Commented May 30, 2010 at 17:27
  • 5
    @Good Person: <kbd>Tab</kbd> Commented May 30, 2010 at 19:46

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.