Option "recexact" doesn't seem to work quite right for me under 3.1.6, or at least not as well as it did under 3.1.5: Under 3.1.5: % /usr/local/bin/zsh-3.1.5 -f % setopt recexact menucomplete noautolist noautomenu % touch note note.old % ls note note.old % vi note -> % vi note # (where # indicates cursor position) Under 3.1.6: % /usr/local/bin/zsh-3.1.6 -f % setopt recexact menucomplete noautolist noautomenu % touch note note.old % ls note note.old % vi note (beep) -> % vi note# Besides a beep when I didn't expect one, it tends to make me think that I mis-typed something, because it's the same behavior as if I were trying to complete a non-existant file: % ls % vi badfile (beep) -> % vi badfile# At least now I finally know why zsh has been beeping at me so much recently. :) Looking over Src/Zle/zle_tricky., I can see where do_ambiguous() handles REC_EXACT, but after substituting all the variables, it appears to handle it only if: isset(RECEXACT) && unset(MENUCOMPLETE) whereas before it appeared to be if: isset(RECEXACT) && (unset(MENUCOMPLETE) || unset(AUTOMENU)) -- Will Day OIT / O&E / Technical Support willday@rom.oit.gatech.edu Georgia Tech, Atlanta 30332-0715 -> Opinions expressed are mine alone and do not reflect OIT policy <- Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety. Benjamin Franklin, Pennsylvania Assembly, Nov. 11, 1755