Mercurial > dotfiles
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 |