[Fix #46] Show vicmd indicator in all keymaps
This commit is contained in:
parent
b4fd92d98a
commit
a51cfb43a6
68
keyboard.zsh
68
keyboard.zsh
|
@ -61,6 +61,40 @@ keyinfo=(
|
||||||
'BackTab' "$terminfo[kcbt]"
|
'BackTab' "$terminfo[kcbt]"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Restores RPROMPT when exiting vicmd.
|
||||||
|
function vi-restore-rprompt() {
|
||||||
|
if (( $+RPROMPT_CACHED )); then
|
||||||
|
RPROMPT="$RPROMPT_CACHED"
|
||||||
|
unset RPROMPT_CACHED
|
||||||
|
zle reset-prompt
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
add-zsh-trap INT vi-restore-rprompt
|
||||||
|
|
||||||
|
# Displays the current vi mode (command).
|
||||||
|
function zle-keymap-select() {
|
||||||
|
if ! vi-restore-rprompt && [[ "$KEYMAP" == 'vicmd' ]]; then
|
||||||
|
RPROMPT_CACHED="$RPROMPT"
|
||||||
|
zstyle -s ':omz:prompt' vicmd RPROMPT
|
||||||
|
zle reset-prompt
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
zle -N zle-keymap-select
|
||||||
|
|
||||||
|
# Resets the prompt after exiting edit-command-line.
|
||||||
|
function zle-line-init() {
|
||||||
|
vi-restore-rprompt
|
||||||
|
}
|
||||||
|
zle -N zle-line-init
|
||||||
|
|
||||||
|
# Resets the prompt after the line has been accepted.
|
||||||
|
function zle-line-finish() {
|
||||||
|
vi-restore-rprompt
|
||||||
|
}
|
||||||
|
zle -N zle-line-finish
|
||||||
|
|
||||||
zstyle -s ':omz:editor' keymap 'keymap'
|
zstyle -s ':omz:editor' keymap 'keymap'
|
||||||
if [[ "$keymap" == (emacs|) ]]; then
|
if [[ "$keymap" == (emacs|) ]]; then
|
||||||
# Use Emacs key bindings.
|
# Use Emacs key bindings.
|
||||||
|
@ -124,40 +158,6 @@ elif [[ "$keymap" == vi ]]; then
|
||||||
# Use vi key bindings.
|
# Use vi key bindings.
|
||||||
bindkey -v
|
bindkey -v
|
||||||
|
|
||||||
# Restores RPROMPT when exiting vicmd.
|
|
||||||
function vi-restore-rprompt() {
|
|
||||||
if (( $+RPROMPT_CACHED )); then
|
|
||||||
RPROMPT="$RPROMPT_CACHED"
|
|
||||||
unset RPROMPT_CACHED
|
|
||||||
zle reset-prompt
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
add-zsh-trap INT vi-restore-rprompt
|
|
||||||
|
|
||||||
# Displays the current vi mode (command).
|
|
||||||
function zle-keymap-select() {
|
|
||||||
if ! vi-restore-rprompt && [[ "$KEYMAP" == 'vicmd' ]]; then
|
|
||||||
RPROMPT_CACHED="$RPROMPT"
|
|
||||||
zstyle -s ':omz:prompt' vicmd RPROMPT
|
|
||||||
zle reset-prompt
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
zle -N zle-keymap-select
|
|
||||||
|
|
||||||
# Resets the prompt after exiting edit-command-line.
|
|
||||||
function zle-line-init() {
|
|
||||||
vi-restore-rprompt
|
|
||||||
}
|
|
||||||
zle -N zle-line-init
|
|
||||||
|
|
||||||
# Resets the prompt after the line has been accepted.
|
|
||||||
function zle-line-finish() {
|
|
||||||
vi-restore-rprompt
|
|
||||||
}
|
|
||||||
zle -N zle-line-finish
|
|
||||||
|
|
||||||
# Edit command in an external editor.
|
# Edit command in an external editor.
|
||||||
bindkey -M vicmd "v" edit-command-line
|
bindkey -M vicmd "v" edit-command-line
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue