This is (going to be) the ultimate keybinding - vi keys when you hit escape, and emacs-ish keys when you don't.
Please help us fill in the gaps.
bindkey -v bindkey "^P" vi-up-line-or-history bindkey "^N" vi-down-line-or-history bindkey "^[[1~" vi-beginning-of-line # Home bindkey "^[[4~" vi-end-of-line # End bindkey '^[[2~' beep # Insert bindkey '^[[3~' delete-char # Del bindkey '^[[5~' vi-backward-blank-word # Page Up bindkey '^[[6~' vi-forward-blank-word # Page Down
Note that some people might have ^[[7 and ^[[8 for Home and End, respectively. On Linux with GnuScreen, this is not the case.
Please consider to use zkbd to canonicalize this.