Of modern shells, I prefer zsh over fish because it supports POSIX standards which make it possible to do stuff like copy & paste
export VARNME=value. In virtually every other way, fish is awesome.
To get history that behaves like the bash default, in
setopt share_history # share command history data
To get iTerm keybinding to work right, add to
bindkey -e bindkey '^[[1;9C' forward-word bindkey '^[[1;9D' backward-word
Set up the keybindings to emit the correct escape sequence: