ZSH + gnome-terminal e modo de entrada VI: mostra o cursor ibeam ou block

3

Existem diferentes métodos para mostrar se você está em inserção ou normal ao usar a ligação da chave VI no ZSH.

O terminal Gnome também permite que você altere o acento circunflexo do bloco para ibeam | com uma chamada para gconftool-2 .

Como posso combinar esses dois para que eu tenha um ibeam no modo de inserção e um bloco no modo normal?

    
por ClojureMostly 22.03.2015 / 16:40

2 respostas

3

Colocando as duas respostas fornecidas na pergunta [1 , 2] juntos, eu acabo com isso:

function zle-line-init zle-keymap-select {
    if [[ $KEYMAP == vicmd ]]; then
       gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block
    elif [[ $KEYMAP == (main|viins) ]]; then
       gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam
    fi
}
zle -N zle-line-init
zle -N zle-keymap-select

A diferença é que eu verifico o parâmetro $KEYMAP diretamente com uma cláusula if..fi e executo o comando gconftool-2 em vez de alterar o prompt.

    
por 22.03.2015 / 21:26
4

Em versões recentes do gnome-terminal, você pode usar as seguintes seqüências de escape para alterar o cursor:

  • \e[0 q ou \e[ q : redefinir para o que estiver definido nas configurações do perfil
  • \e[1 q : bloco intermitente
  • \e[2 q : bloco estável
  • \e[3 q : sublinhado intermitente
  • \e[4 q : sublinhado constante
  • \e[5 q : feixe de luz intermitente
  • \e[6 q : feixe fixo

Você pode imprimi-las por, por exemplo, %código%. Conecte-os à sua configuração zsh, conforme mostrado na resposta do mpy.

    
por 06.05.2015 / 23:24