comparison dot_zshrc @ 551:2cce224318f9

Add mode indicators for zsh-vi-mode
author zegervdv <zegervdv@me.com>
date Tue, 01 Feb 2022 15:22:08 +0100
parents 4a8042dab396
children f308f66cad13
comparison
equal deleted inserted replaced
550:1b7d04302f89 551:2cce224318f9
10 %j -> ' 10 %j -> '
11 11
12 12
13 vim_ins_mode="%F{black}%K{yellow} INS %k%f" 13 vim_ins_mode="%F{black}%K{yellow} INS %k%f"
14 vim_cmd_mode="%F{white}%K{red} NRM %k%f" 14 vim_cmd_mode="%F{white}%K{red} NRM %k%f"
15 vim_vis_mode="%F{black}%K{blue} VIS %k%f"
16 vim_visline_mode="%F{black}%K{blue} VIL %k%f"
17 vim_rep_mode="%F{black}%K{green} REP %k%f"
15 vim_mode=$vim_ins_mode 18 vim_mode=$vim_ins_mode
16
17 # Cursor mapping from nyquase/vi-mode
18 function select_cursor() {
19 case $KEYMAP in
20 # Block cursor in normal and visual mode
21 vicmd) echo -ne "\e[2 q";;
22 # Line cursor in insert mode
23 main|viins) echo -ne "\e[5 q";;
24 # Else Block cursor
25 *) echo -ne "\e[2 q";;
26 esac
27 }
28
29 function zle-keymap-select {
30 vim_mode="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}"
31 zle reset-prompt
32 zle -R
33 select_cursor
34 }
35 zle -N zle-keymap-select
36
37 function zle-line-init() {
38 echoti smkx
39 zle reset-prompt
40 select_cursor
41 }
42 zle -N zle-line-init
43
44 function zle-line-finish {
45 vim_mode=$vim_ins_mode
46 echoti rmkx
47 echo -ne "\e[2 q"
48 }
49 zle -N zle-line-finish
50 19
51 function TRAPINT() { 20 function TRAPINT() {
52 vim_mode=$vim_ins_mode 21 vim_mode=$vim_ins_mode
53 return $(( 128 + $1 )) 22 return $(( 128 + $1 ))
23 }
24
25 function zvm_after_select_vi_mode() {
26 case $ZVM_MODE in
27 $ZVM_MODE_NORMAL)
28 vim_mode=$vim_cmd_mode
29 ;;
30 $ZVM_MODE_INSERT)
31 vim_mode=$vim_ins_mode
32 ;;
33 $ZVM_MODE_VISUAL)
34 vim_mode=$vim_vis_mode
35 ;;
36 $ZVM_MODE_VISUAL_LINE)
37 vim_mode=$vim_visline_mode
38 ;;
39 $ZVM_MODE_REPLACE)
40 vim_mode=$vim_rep_mode
41 ;;
42 esac
54 } 43 }
55 44
56 autoload -Uz vcs_info 45 autoload -Uz vcs_info
57 zstyle ':vcs_info:*' enable git hg 46 zstyle ':vcs_info:*' enable git hg
58 47