From ff7c336bd517594e1bab1c27cd504b5a6f62e547 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Appel Date: Tue, 21 Feb 2023 01:08:55 -0500 Subject: added zsh config --- zsh/zshvimodes | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 zsh/zshvimodes (limited to 'zsh/zshvimodes') diff --git a/zsh/zshvimodes b/zsh/zshvimodes new file mode 100644 index 0000000..ab60972 --- /dev/null +++ b/zsh/zshvimodes @@ -0,0 +1,23 @@ +#vim_ins_mode="%{$fg[cyan]%}[INS]%{$reset_color%}" +vim_ins_mode="" +vim_cmd_mode="%{$fg[green]%}[CMD]%{$reset_color%}" +vim_mode=$vim_ins_mode + +function zle-keymap-select { + vim_mode="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}" + zle reset-prompt +} +zle -N zle-keymap-select + +function zle-line-finish { + vim_mode=$vim_ins_mode +} +zle -N zle-line-finish + +# Fix a bug when you C-c in CMD mode and you'd be prompted with CMD mode indicator, while in fact you would be in INS mode +# Fixed by catching SIGINT (C-c), set vim_mode to INS and then repropagate the SIGINT, so if anything else depends on it, we will not break it +# Thanks Ron! (see comments) +function TRAPINT() { + vim_mode=$vim_ins_mode + return $(( 128 + $1 )) +} -- cgit v1.2.3