Acabei de começar a usar o zsh e estou configurando algumas coisas. Eu escolhi as ligações vi como eu estou mais familiarizado com elas. Como muitas pessoas antes de mim, logo descobri que seria útil ter alguma pista visual do modo vi em que estou antes de começar a digitar.
Olhando em volta de vários lugares, encontrei alguns que inserem algum texto ou outro no prompt. Eu tentei adaptar um deles para usar uma cor diferente para o meu prompt, em vez de adicionar texto. Aqui está o código relevante:
setopt PROMPT_SUBST
VIMODE="$fg[red]"
function zle-line-init zle-keymap-select {
VIMODE="${${KEYMAP/vicmd/$fg[green]}/(main|viins)/$fg[red]}"
zle reset-prompt
}
zle -N zle-line-init zle-keymap-select
PROMPT='%{${VIMODE}%}%#%{$reset_color%} '
Isso obteria uma diretiva de cor dentro da variável $ {VIMODE}, vermelha se estiver na inserção, verde se estiver no cmd. Ele funciona e atualiza a cor corretamente, até o momento, para todas as alterações de modo que usei (maiúscula C ou A, i, a).
Mas depois de executar um comando, o prompt fica branco até eu começar a digitar algo (então ele fica vermelho). Limpar a tela através de ^ L faz com que ela seja redesenhada corretamente.
Alguém pode por favor verificar e me dizer onde estou fazendo as coisas erradas? Tenho certeza de que também há uma maneira melhor de alterar condicionalmente a cor do que passar por uma variável.
Obrigado antecipadamente!
Editar:
Bem, algo realmente estranho está acontecendo e eu não entendo isso. Eu tive que reiniciar meu computador e quando eu abri um terminal o prompt parou de trocar cores entre as mudanças de modo.
Eu tirei o widget zle-line-init e source do arquivo .zshrc e, magicamente, ele não só funciona novamente, como o problema original prompt após um comando) também desapareceu .
Portanto, este é o estado atual das coisas, e não tenho certeza se isso acontecerá novamente ou não.
VIMODE="$fg[red]"
function zle-keymap-select {
VIMODE="${${KEYMAP/vicmd/$fg[green]}/(main|viins)/$fg[red]}"
zle reset-prompt
}
zle -N zle-keymap-select
Alguém sabe o que poderia ter sido os fatores envolvidos nisso?
Eu originalmente não reiniciei o terminal, apenas obtive o .zshrc para carregar tudo. Alguma coisa poderia ter efeitos colaterais por causa disso?
Obrigado.
Tags command-line zsh shell