Context for those who know about zsh completion but not all its features: One of the unique and really useful features of zsh is as follows:
[/usr/dir1/dir2/dir3/]$ cd dir1 dirnew /usr/dirnew/dir2/dir3 [/usr/dirnew/dir2/dir3]$
i.e. If a user can replace a particular directory in the hierarchy with another. Its a very handy feature. (assuming dirnew does have dir2/dir3). If dirnew didn't have dir2/dir3, this command would fail.
I wonder how I can complete cd though, for long directory names. When I do
cd <TAB>, besides the directories in the current directory, what should also show up is directories in the current hierarchy. Once I choose or type in one of the directories from the hierarchy, if I press
<TAB> again, I should get completion options from the directories in parent which have a similar hierarchy. In the above example, say /usr/ has dirnew and diranother beisdes dir1. dirnew has dir2/dir3 but diranother is empty.
cd dir1 <TAB> should give me new as an option, but not diranother.