zsh: Make tab completion case-insensitive and more flexible
zsh: Make tab completion case-insensitive and more flexible

Started here:

  http://askubuntu.com/questions/1577/moving-from-bash-to-zsh

Which provides the basic answer:

  zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'

Then here:

  http://stackoverflow.com/questions/24226685/have-zsh-return-case-insensitive-auto-complete-matches-but-prefer-exact-matches

Which suggests:

  zstyle ':completion:*' '' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'

I got rid of the explicit match part ('') because I didn't like the way
it prevented my from cycling through matches with differing cases. I
also changed the `a-z` (etc) pattern to one using `[:lower:]` (etc) as
recommended in `man zshcompwid` (which, BTW, explains the `r:` and `l:`
patterns in great depth.

This mostly works pretty well based on my brief testing with it.

wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent