
Existem diferentes métodospara mostrar se você está inserido ou normal ao usar a ligação de teclas VI no ZSH.
Terminal Gnome tambémpermite que você altere o cursordo bloco █
para o ibeam |
com uma chamada para gconftool-2
.
Como posso combinar esses dois para ter um ibeam no modo de inserção e um bloco no modo normal?
Responder1
Colocando as duas respostas fornecidas na pergunta[1,2] juntos, acabo com isto:
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 verifico o $KEYMAP
parâmetro diretamente com uma if..fi
cláusula e executo o gconftool-2
comando em vez de alterar o prompt.
Responder2
Nas versões recentes do gnome-terminal, você pode usar as seguintes sequê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 piscando\e[2 q
: bloco constante\e[3 q
: sublinhado piscando\e[4 q
: sublinhado constante\e[5 q
: feixe I piscando\e[6 q
: feixe I constante
Você pode imprimi-los, por exemplo echo -ne '\e[5 q'
. Conecte-os à sua configuração zsh, conforme mostrado na resposta do mpy.