As mentioned by others, zsh's autocomplete is excellent.
You can setup your own autocomplete for custom commands without too much hassle as well. To tab complete usernames as arguments to finger:
# ~/.zshrc
function userlist {
reply=(`users | tr ' ' '\n' |sort -u `);}
compctl -K userlist finger
set COMPLETE_ALIASES
Other options I like to have set:
# turn on spelling correction
setopt correct
# don't save duplicates in command history
setopt histignoredups
# don't allow accidental file over-writes
setopt noclobber
Pushd and popd are also pretty handy.
# Always pushd when changing directory
setopt auto_pushd
# Have pushd with no arguments act like `pushd $HOME'.
setopt PUSHD_TO_HOME
Annoyingly the home and end keys don't by default work on zsh like they do on other shells, but you can fix this.
# Make home and end keys work.
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
2i didn't know about that feature, i'm gonna have to try that one! – Roy Rico – 2009-08-07T17:11:14.477
1Which option is that directory autocomplete? – hometoast – 2009-10-14T14:24:14.480