Percebi que existem duas maneiras de definir a cor de primeiro plano no seu zsh
prompt.
PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'
Ambas as linhas produzirão um azul $
como prompt. Existe alguma diferença entre esses dois e existe uma maneira preferida de definir seu prompt?
Se quiser especificar um código de cores, você pode fazer $F{160}
ou algum outro número, mas não pode for %{$fg[160]%}
. Esta é a única diferença entre essas duas opções?
Responder1
O escape direto %F{...}
é tratado diretamente pelo código zsh C. Usar $fg[blue]
é acessar um array associativo chamado fg
. Para que isso funcione, você precisa invocar uma colors
função que vem com o zsh. Para prompts que também dependem da PROMPT_SUBST
opção.
Não há muita diferença em termos do que essas duas formas produzem. O primeiro é mais limpo e funciona melhor com o rastreamento do estado do terminal pelo zsh. Ele foi adicionado ao zsh em 2008, enquanto a função de cores foi adicionada em 1999. Hoje em dia, é muito improvável que você fique preso a um zsh com idade suficiente para não ter nenhum dos recursos, então não faz mais sentido continuar com o método antigo.
E como você notou, %F
pode lidar com números onde seu terminal suporta 88 ou 256 cores. Se você executar um zsh muito mais recente, também poderá especificar trigêmeos hexadecimais, como %F{#0000ff}
se tivesse um terminal true-color (ou carregar o módulo zsh/nearcolor).