diff --git a/zsh/prompt b/zsh/prompt index 8b1c8ba..e5df086 100644 --- a/zsh/prompt +++ b/zsh/prompt @@ -1,6 +1,7 @@ # vim: set ft=zsh: function _set_rprompt() { + # shellcheck disable=SC2154 local -a _status=("${pipestatus[@]}") RPROMPT="" @@ -48,7 +49,8 @@ setopt PROMPT_SUBST # https://zsh.sourceforge.io/Doc/Release/Parameters.html # https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html -PROMPT='%(#.%F{red}.%12F)%n@%m%f %1~ %(#.#.$) ' +# shellcheck disable=SC2016 +PROMPT='%(#.%F{red}.%12F)%n@%m%f %1~ ${VI_MODE_INDICATOR:-%(#.#.$)} ' PROMPT_START=$'%{\e]133;A\a%}' PROMPT_END=$'%{\e]133;B\a%}' export PROMPT=${PROMPT_START}${PROMPT}${PROMPT_END} diff --git a/zsh/rc b/zsh/rc index d1e1079..724a1fa 100644 --- a/zsh/rc +++ b/zsh/rc @@ -44,18 +44,21 @@ bindkey -a '_' vi-first-non-blank # shellcheck disable=SC2034 zle_highlight=(region:bg=#323641) -# Change cursor shape based on vi mode +# Vi mode indicator in prompt function zle-keymap-select { - if [[ ${KEYMAP} == main ]]; then - echo -ne '\e[5 q' # Beam cursor for insert mode - elif [[ ${KEYMAP} == vicmd ]]; then - echo -ne '\e[1 q' # Block cursor for command mode + if [[ ${KEYMAP} == vicmd ]]; then + VI_MODE_INDICATOR="%F{yellow}N%f" + else + VI_MODE_INDICATOR="" fi + zle reset-prompt } zle -N zle-keymap-select function zle-line-init { - echo -ne '\e[5 q' # Beam cursor for insert mode + # shellcheck disable=SC2034 + VI_MODE_INDICATOR="" + zle reset-prompt } zle -N zle-line-init