Diferencia entre %F{color} y %{$fg[color]%} en el mensaje zsh

Diferencia entre %F{color} y %{$fg[color]%} en el mensaje zsh

Noté que hay dos formas de configurar el color de primer plano en su zshmensaje.

PROMPT='%F{blue}$'
PROMPT='%{$fg[blue]%}$'

Ambas líneas producirán un color azul $como mensaje. ¿Existe alguna diferencia entre estos dos? ¿Existe alguna forma preferida de configurar el mensaje?

Si desea especificar un código de color, puede hacerlo $F{160}o algún otro número, pero no puede %{$fg[160]%}. ¿Es esta la única diferencia entre estas dos opciones?

Respuesta1

El escape directo %F{...}se maneja directamente mediante el código zsh C. Usar $fg[blue]es acceder a una matriz asociativa llamada fg. Para que eso funcione, necesitas invocar una colorsfunción que viene con zsh. Para indicaciones que también dependen de la PROMPT_SUBSTopción.

No hay mucha diferencia en términos de lo que producen estas dos formas. El primero es más limpio y funciona mejor con el seguimiento del estado del terminal por parte de zsh. Se agregó a zsh en 2008, mientras que la función de colores se agregó en 1999. Hoy en día, es muy poco probable que te quedes con un zsh lo suficientemente antiguo como para carecer de cualquiera de las funciones, por lo que ya no tiene sentido seguir con la forma antigua.

Y como habrás notado, %Fpuede manejar números donde tu terminal admita 88 o 256 colores. Si ejecuta un zsh mucho más reciente, también puede especificar tripletes hexadecimales, como %F{#0000ff}si tiene un terminal de color verdadero (o carga el módulo zsh/nearcolor).

información relacionada