40 lines
864 B
Bash
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
|