# vi mode bindkey -v # make backspace and delete behave like vim bindkey -M viins '^?' backward-delete-char bindkey -M viins '^H' backward-delete-char bindkey -M viins '^[[3~' delete-char # fix home / end bindkey '' beginning-of-line bindkey '' end-of-line # display block cursor in normal mode function zle-keymap-select zle-line-init zle-line-finish { case $KEYMAP in vicmd) echo -ne "\e[2 q";; viins|main) echo -ne "\e[6 q";; esac zle reset-prompt zle -R } zle -N zle-keymap-select zle -N zle-line-init zle -N zle-line-finish