Processe diretivas de prompt dentro de $ psvar sem PROMPT_SUBST

1

Estou usando precmd para gerar um status git colorido no meu prompt.

Eu gero uma picada como %F{green}master%f%F{red}%f e atribuo a $psvar[1] .

Meu prompt inclui %1v para exibir o texto.

No entanto, não vejo texto em verde e vermelho, mas sim o valor literal atribuído.

Existe alguma maneira de obter zsh para analisar o conteúdo de $psvar ?

    
por Tom Hale 09.07.2018 / 11:17

2 respostas

1

A expansão rápida não é recursiva. Você tem %1v no seu prompt, então o conteúdo de $psvar[1] é inserido no seu prompt.

Em vez de colocar diretivas de expansão imediatas em $psvar , coloque o conteúdo do prompt. Insira as seqüências de escape do terminal para mudanças de cor. Você pode usar colors para isso.

autoload -U colors
colors
… {
  psvar[1]="$fg[green]$branch$fg[default]"
}
    
por 09.07.2018 / 13:08
0

Esta postagem da lista de e-mail zsh-users diz:

The results of percent-expandos are not re-expanded, so whatever gets inserted by %v appears literally in the final prompt.

Portanto, parece que a única maneira é usar set -o prompt_subst .

    
por 09.07.2018 / 11:20