Você já encontrou zle-keymap-select
, que é executado sempre que o modo é alterado. Você poderia usá-lo para definir algum outro indicador visual do que o prompt, dependendo do que o seu terminal suportar (e do seu gosto na exibição do indicador de modo, é claro).
Há um padrão capacidade terminfo para alterar a forma do cursor. No entanto, alguns terminais exibem o mesmo cursor nos dois modos. A noção do Xterm de um cursor menos visível é fazê-lo piscar (e isso deve ser ativado com o argumento de linha de comando -bc
ou cursorBlink
resource).
zle-keymap-select () {
case $KEYMAP in
vicmd) print -rn -- $terminfo[cvvis];; # block cursor
viins|main) print -rn -- $terminfo[cnorm];; # less visible cursor
esac
}
Com alguns terminais, você também pode alterar a cor do cursor com print -n '\e]12;pink\a'
(por nome de cor) ou print -n '\e]12;#abcdef\a'
(por especificação RGB). Essas sequências são descritas na documentação do xterm, no arquivo ctlseqs
; emuladores de terminal modernos geralmente emulam o xterm, embora possam não suportar todos os seus recursos.