Eu encontrei uma solução:
Eu coloquei isso no meu ~/.vimrc
:
autocmd VimEnter * silent exec "! echo -ne '\e[1 q'"
autocmd VimLeave * silent exec "! echo -ne '\e[5 q'"
Eu uso modo vi em oh-my-zsh com o af-magic tema .
Eu quero que o estilo do cursor indique se estou no modo normal (bloco) ou modo de inserção (feixe), ambos em zsh
e em vim
.
Isso é o que eu tenho até agora:
No meu ~/.zshrc
:
# vim mode config
# ---------------
# Activate vim mode.
bindkey -v
# Remove mode switching delay.
KEYTIMEOUT=5
# Change cursor shape for different vi modes.
function zle-keymap-select {
if [[ ${KEYMAP} == vicmd ]] ||
[[ $1 = 'block' ]]; then
echo -ne '\e[1 q'
elif [[ ${KEYMAP} == main ]] ||
[[ ${KEYMAP} == viins ]] ||
[[ ${KEYMAP} = '' ]] ||
[[ $1 = 'beam' ]]; then
echo -ne '\e[5 q'
fi
}
zle -N zle-keymap-select
# Use beam shape cursor on startup.
echo -ne '\e[5 q'
# Use beam shape cursor for each new prompt.
preexec() {
echo -ne '\e[5 q'
}
Como foi encontrado aqui .
Em vim
, eu uso Vundle e terminus .
Com essas configurações, zsh
e vim
funcionam como deveriam quando consideradas independentemente.
No entanto, quando eu digito vim
de zsh
em modo de inserção , vim
inicia em modo normal (como deveria) mas ainda mostra o cursor da forma de feixe.
Da mesma forma, quando eu saio de vim
, eu volto para zsh
em modo de inserção , mas o cursor ainda está em forma de bloco (já que o último modo em vim
era normal ).
Quando, depois disso, alterno os modos pela primeira vez (em zsh
e vim
), o cursor se comporta como deveria novamente.
Como posso fazer com que eles exibam o cursor correto depois de digitar e sair vim
também?
Eu tentei colocar
autocmd VimEnter * stopinsert
autocmd VimLeave * startinsert
no meu ~.vimrc
, mas isso não afeta o cursor.
Tags vim zsh oh-my-zsh caret-cursor