arch colors zsh prompt

colors - arch - ¿Cómo puedo cambiar el color de mi aviso en zsh(diferente del texto normal)?



zsh god (6)

Aquí hay un ejemplo de cómo configurar un indicador rojo:

PS1=$''/e[0;31m$ /e[0m''

La magia es el /e[0;31m (activar el primer plano rojo) y /e[0m (desactivar los atributos del personaje). Estas se llaman secuencias de escape. Las diferentes secuencias de escape le dan diferentes resultados, desde el posicionamiento absoluto del cursor, hasta el color, hasta la posibilidad de cambiar la barra de título de su ventana, y así sucesivamente.

Para más información sobre las secuencias de escape, consulte la entrada de Wikipedia en los códigos de escape de ANSI

Para reconocer mejor el inicio y el final de la salida en una línea de comando, deseo cambiar el color de mi solicitud, de modo que sea visiblemente diferente de la salida de los programas. Cuando uso zsh, ¿alguien puede darme una pista?


He descubierto que, con zsh5 (el predeterminado en Debian Jessie), todas esas soluciones funcionan:

  • $''/e[00m
  • $fg[white]
  • $fg{white}

Ahora, tienen un problema: moverán el cursor, lo que dará como resultado una calcomanía fea al tabular (para autocompletar). La solución es simplemente rodear las secuencias de escape con %{FOOBAR%} . Me tomó un tiempo entender esto. Para las soluciones segunda y tercera, el módulo de carga de colors es obligatorio. Para mantener la primera solución legible, simplemente defina las variables para los colores que usa.


No creo que la autoload -U colors && colors sea ​​necesaria y uno simplemente puede hacer:

PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "

para lograr el mismo resultado que la respuesta de FireDude . Consulte la documentación de ZSH para obtener más información.


Pon esto en ~/.zshrc :

autoload -U colors && colors PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "

Colores compatibles:
Rojo, azul, verde, cian, amarillo, magenta, negro y blanco (de esta respuesta ) aunque diferentes computadoras pueden tener diferentes opciones válidas.

Códigos de color envolvente (y cualquier otro carácter no imprimible) con %{....%} . Esto es para que el ajuste del texto funcione correctamente.


Zsh viene con instrucciones de colores integradas. Tratar

autoload -U promptinit && promptinit

y luego prompt -l enumera las indicaciones disponibles, -p fire muestra una vista -p fire el indicador de "fuego", -s fire establece.

Cuando esté listo para agregar un mensaje, agregue algo como esto debajo de la línea de carga automática anterior:

prompt fade red


man zshall y busca EXPANSIÓN PRONTA

Después de leer las respuestas existentes aquí, varias de ellas son contradictorias. Probé varios enfoques en sistemas que ejecutan zsh 4.2 y 5+ y encontré que la razón por la cual estas respuestas son contradictorias es porque no dicen a qué versión de ZSH se dirigen. Las diferentes versiones usan una sintaxis diferente para esto y algunas requieren varias autocarga.

Entonces, la mejor opción es probablemente man zshall y buscar PROMPT EXPANSION para descubrir todas las reglas para su instalación particular de zsh. Tenga en cuenta que en los comentarios, cosas como "Uso Ubuntu 11.04 o 10.4 o OSX" no son muy significativos ya que no está claro qué versión de ZSH está usando. Ubuntu 11.04 no implica una versión más nueva de ZSH que ubuntu 10.04. Puede haber varias razones por las que se instaló una versión anterior. De hecho, una versión más nueva de ZSH no implica qué sintaxis usar sin saber qué versión de ZSH es.