powershell - instalar - Problemas de color con zsh en wsl
oh my zsh plugins (1)
Podríamos examinar el $PROMPT
(o $PS1
).
De hecho, el tema PROMPT_SUBST
de oh-my-zsh usa PROMPT_SUBST
para eso. Por lo tanto, podemos obtener las secuencias de escape sin procesar con redirigir o canalizar la salida de print -P
:
$ print $PROMPT
%{%f%b%k%}$(build_prompt)
$ print -P $PROMPT | cat -v ;# or redirect to a file as you like
^[[39m^[[0m^[[49m^[[40m^[[39m me@mycomputer ^[[44m^[[30mM-nM-^BM-0^[[30m ~ ^[[49m^[[34mM-nM-^BM-0^[[39m
Estas secuencias de escape crudas; los códigos de escape de ANSI están bien descritos en https://en.wikipedia.org/wiki/ANSI_escape_code#Colors . Son los códigos CSI nm
SGR - Seleccionar renglón gráfico.
Intenta describir el resultado anterior:
( ^[[39m
: Los dos primeros personajes se escapan por cat -v
. Tenemos ESC[39m
.]
-
^[[39m^[[0m^[[49m
: que son de%{%f%k%b%}
parte de la salidaprint $PROMPT
.^[[39m
para restablecer el color de primer plano predeterminado,^[[0m
reiniciar cada efecto y[[49m
para restablecer el color de fondo predeterminado. -
^[[40m^[[39m me@mycomputer
: bg color predeterminado fg negro y -
^[[44m^[[30m M-nM-^BM-0
: bg azul y fg color por defecto (M-nM-^BM-0
escat -v
forma de escape de )
En este punto, parece que el prompt produce un código bg blue para pwd. Podrías consultar con
print -P ''%b%F{red}co%F{green}lo%F{blue}rs%f%b''
(Nota: el primer ''% b'')
Esto significa que la configuración de la paleta de colores de PowerShell no coincide con las secuencias de escape ANSI. Podríamos verificar si la configuración de la paleta de colores de la terminal es correcta o no con 16colors.sh
en la distribución de xterm
si tenemos sh
con la salida de sh ./16colors.sh
. (Un ejemplo de salida de la configuración por defecto de xterm podría encontrarse, por ejemplo: https://www.in-ulm.de/~mascheck/various/xterm/16-table.html )
Parece que el tema Solarized (?) De tu PowerShell mapea la secuencia de color del ansi en azul ( ^[[44m
o ^[[34m
) como grey
grisáceo para nuestros ojos.
Entonces, estoy tratando de configurar oh-my-zsh dentro de una terminal wsl (usando powershell como consola aquí, pero obtengo el mismo problema en cmd). Creo que configuré todos mis colores correctamente:
Y cuando ejecuto esto:
print -P ''%B%F{red}co%F{green}lo%F{blue}rs%f%b''
Pero mi mensaje sigue siendo incorrecto, como puede ver. Estoy usando el tema agnoster y el fondo gris en el pwd debería ser azul.
¿Hay alguna forma de ver las secuencias de escape para poder determinar si el problema es con la secuencia de escape frente a la representación de la misma?