dotfiles/zsh/.zsh/vim-mode.zsh
2024-09-17 20:02:23 +02:00

40 lines
864 B
Bash

bindkey -v
export KEYTIMEOUT=1
autoload -U add-zle-hook-widget
line_pre_redraw () {
local previous_vi_keymap="${VI_KEYMAP}"
case "${KEYMAP}" in
vicmd)
case "${REGION_ACTIVE}" in
1)
VI_KEYMAP="VISUAL"
;;
2)
VI_KEYMAP="V-LINE"
;;
*)
VI_KEYMAP="NORMAL"
;;
esac
;;
viins|main)
if [[ "${ZLE_STATE}" == *overwrite* ]]; then
VI_KEYMAP="REPLACE"
else
VI_KEYMAP="INSERT"
fi
;;
esac
if [[ "${VI_KEYMAP}" != "${previous_vi_keymap}" ]]; then
update_right_prompt
fi
}
VI_KEYMAP="INSERT"
add-zle-hook-widget zle-line-pre-redraw line_pre_redraw