As per the discussion here: http://www.zsh.org/mla/users/2003/msg00611.html I'm trying to do the same thing: have zsh respect the case I used, but still offer case-insensitive matches when tab is pressed. Test suite: ./Temp1 ./temp2 ./temp3 ./tEMP4 What I'm looking for: "cd te" fills in "cd temp" then stops. pressing again brings up a menu that suggests the case-sensitive option first: "temp2/ temp3/ Temp1/ tEMP4/" The suggestion in the thread almost fits: _cscomplete() { _complete return 1 } zstyle ':completion:*:cscomplete:*' group-name case-sensitive zstyle ':completion:*:complete:*' group-name case-insensitive zstyle ':completion:*' group-order case-sensitive case-insensitive zstyle ':completion:*::::' completer _cscomplete _complete zstyle ':completion:*:cscomplete:*:*' matcher-list '' zstyle ':completion:*:complete:*' matcher-list 'm:{a-z}={A-Z}' "cd te" fills in "cd temp" then stops. pressing again brings up a menu that suggests the case-sensitive option first: "temp2/ temp3/ Temp1/ temp2/ temp3/ tEMP4/" Unfortunately, if "cd Te" is used, "cd Temp1/" is filled in and nothing else will be suggested. Is there a way to modify the code above so that the same second menu ("Temp1/ temp2/ temp3/ tEMP4/") is shown, even when a single match is found? *As you may be able to tell, I don't understand how zstyle works. I'm just trying to scratch the one itch in an otherwise perfect solution.* Thanks in advance -- I am also a systems administrator by trade, a teacher by nature, and a mindful cook by passion. Sent from my iPhone