diff --git a/plugins/vi-mode/README.md b/plugins/vi-mode/README.md index fdf3ede73..41faf2de0 100644 --- a/plugins/vi-mode/README.md +++ b/plugins/vi-mode/README.md @@ -22,6 +22,13 @@ plugins=(... vi-mode) The default value is unset, unless `vi_mode_prompt_info` is used, in which case it'll automatically be set to `true`. +- `VI_MODE_SET_CURSOR`: controls whether the cursor style is changed when switching + to a different input mode. Set it to `true` to enable it (default: unset): + + ```zsh + VI_MODE_SET_CURSOR=true + ``` + - `MODE_INDICATOR`: controls the string displayed when the shell is in normal mode. See [Mode indicator](#mode-indicator) for details. diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index f83ea7696..e5b252d83 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -4,13 +4,21 @@ # This is especially true if the prompt does things like checking git status. # # Set to "true" to force the prompt to reset on each mode change. -# Set to "false" to force the prompt *not* to reset on each mode change. +# Unset or set to any other value to do the opposite. # -# (The default is not to reset, unless we're showing the mode in RPS1). +# The default is not to reset, unless we're showing the mode in RPS1. typeset -g VI_MODE_RESET_PROMPT_ON_MODE_CHANGE +# Control whether to change the cursor style on mode change. +# +# Set to "true" to change the cursor on each mode change. +# Unset or set to any other value to do the opposite. +typeset -g VI_MODE_SET_CURSOR + typeset -g VI_KEYMAP=main function _vi-mode-set-cursor-shape-for-keymap() { + [[ "$VI_MODE_SET_CURSOR" = true ]] || return + # https://vt100.net/docs/vt510-rm/DECSCUSR local _shape=0 case "${1:-${VI_KEYMAP:-main}}" in