function zle-line-init zle-keymap-select { zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select #changing mode clobbers the keybinds, so store the keybinds before and execute #them after binds=`bindkey -L` bindkey -v for bind in ${(@f)binds}; do eval $bind; done unset binds # if mode indicator wasn't setup by theme, define default if [[ "$MODE_INDICATOR" == "" ]]; then MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}" fi function vi_mode_prompt_info() { echo "${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}" } # define right prompt, if it wasn't defined by a theme if [[ "$RPS1" == "" && "$RPROMPT" == "" ]]; then RPS1='$(vi_mode_prompt_info)' fi