Alterando o estilo do cursor com base no modo em zsh e vim

3

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.

    
por maddingl 24.03.2018 / 16:15

1 resposta

1

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'" 
    
por 24.03.2018 / 21:28