Respuestas:
A continuación, se muestra un ejemplo de cómo configurar un indicador rojo:
PS1=$'\e[0;31m$ \e[0m'
La magia es el \e[0;31m
(enciende el primer plano rojo) y\e[0m
(desactivar los atributos de los personajes). Se denominan secuencias de escape. Las diferentes secuencias de escape le brindan diferentes resultados, desde el posicionamiento absoluto del cursor, hasta el color, la posibilidad de cambiar la barra de título de su ventana, etc.
Para obtener más información sobre las secuencias de escape, consulte la entrada de wikipedia sobre códigos de escape ANSI
Pon esto en ~/.zshrc
:
autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "
Colores soportados:
red
, blue
, green
, cyan
, yellow
, magenta
, black
, y white
(a partir de esta respuesta ), aunque diferentes computadoras pueden tener diferentes opciones válidas.
Envuelva los códigos de color (y cualquier otro carácter no imprimible) con %{....%}
. Esto es para que el ajuste del texto funcione correctamente.
Además, así es como puede hacer que esto funcione con el recorte de directorio desde aquí .
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "
zsh: colors: function definition file not found
%{...%}
medios que el contenido será interpretado como una secuencia de escape literal, por lo que el cursor no se moverán durante la impresión de la secuencia. Si no lo usa, los códigos de color pueden mover el cursor y producir efectos no deseados. Esto está documentado en la Visual Effects
sección en la página de manual de zshmisc
Zsh viene con indicaciones de colores incorporadas. Tratar
autoload -U promptinit && promptinit
y luego prompt -l
enumera los avisos disponibles, obtiene una vista -p fire
previa del aviso "fuego" y lo -s fire
configura.
Cuando esté listo para agregar un mensaje, agregue algo como esto debajo de la línea de carga automática de arriba:
prompt fade red
No creo que autoload -U colors && colors
sea necesario más y uno puede simplemente 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.
autoload -U colors && colors
autoload
.
autoload on
?
autoload -U colors
, eso significa que su distribución ya lo tiene en algún otro archivo de inicialización zsh. Aún debe incluirlo en los scripts que desee compartir con otros.
for i in {1..256}; do print -P "%F{$i}Color : $i"; done;
%F{118}
(1 hasta 256)$FG[018]
(1 hasta 256)$fg[magenta]
(magenta, rojo, blanco, amarillo, negro, azul, cian, verde)PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'
PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} '
La definición de variables (PS1 / PROMPT) debe agregarse a ~/.zshrc
También podemos redefinir la variable PS1 en el indicador actual para probarla de inmediato (los cambios no se guardan).
La respuesta de Bryan Oakley anterior tiene una falla, como ya se ha señalado, y la solución ofrecida por Andrew Marshall, aunque no tiene la falla, no lo hace obvio para demasiada personalización en los colores utilizados.
Como macOS Catalina solicita que zsh sea el shell predeterminado de ahora en adelante, creo que varias personas más pueden querer personalizar su mensaje y podrían venir aquí para obtener una respuesta. Entonces, pensé que intentaría dar un resumen más amplio y tocar otras nociones muy relacionadas que permiten una mayor personalización.
Códigos de 3 dígitos para varios colores. Primero que nada, aquí podemos encontrar códigos de 3 dígitos para varios colores: https://unix.stackexchange.com/a/124409/194343 . Por ejemplo, 214 es una especie de color naranja.
Primer plano y fondo. La otra información clave es que para los colores de fondo F o Bc K , se puede definir lo que se quiere con F y K respectivamente. La fuente es el manual de zsh sobre efectos visuales: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
Entonces, por ejemplo, los siguientes dos comandos
autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "
presente el nombre de host en naranja con fondo negro, seguido de dos puntos en blanco con fondo negro, seguido del directorio de trabajo actual en azul brillante con fondo negro, seguido del signo de dólar en blanco con fondo negro.
A continuación, encontrará más información relacionada.
Información rápida en el lado derecho. Por ejemplo, agregar una marca de tiempo. Consulte https://superuser.com/a/1251045/290299 . Por supuesto, esto se puede codificar por colores, por ejemplo, con un color azul claro / violeta, como este:
RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"
Colores para ls
. Después de leer el manual de ls, uno, por ejemplo, puede activar los colores para ls
usar los siguientes dos comandos:
export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad
Finalmente, como último comentario que no he probado porque estoy satisfecho con mi configuración, otra vía podría ser que alguien instale el puerto coreutils
desde MacPorts y luego use gdircolors
(fuente: https://unix.stackexchange.com/a/174596 / 194343 ). (Puedo editar esta última parte en el futuro, ya que todas las anteriores son piezas relacionadas que hacen que la vida cotidiana sea mucho más divertida y fácil de afrontar).
Descubrí 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 resultará en una calcomanía fea al tabular (para autocompletar). La solución es simplemente rodear las secuencias de escape con %{FOOBAR%}
. Me tomó un tiempo darme cuenta de esto. Para 2ª y 3ª soluciones, el colors
módulo de carga es obligatorio. Para mantener legible la primera solución, simplemente defina variables para los colores que usa.
Para obtener un mensaje con el color según el estado de salida del último comando, puede usar esto:
PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'
Simplemente agregue esta línea a su ~/.zshrc
.
La documentación enumera posibles marcadores de posición.
Prueba mi favorito: ponlo
~/.zshrc
esta línea:
PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'
no olvides
source ~/.zshrc
para probar los cambios
puedes cambiar los colores / códigos de color, por supuesto :-)
man zshall y busque PROMPT EXPANSION
Después de leer las respuestas existentes aquí, varias de ellas están en conflicto. Probé varios enfoques en sistemas que ejecutan zsh 4.2 y 5+ y descubrí que la razón por la que estas respuestas son contradictorias es que no dicen a qué versión de ZSH están dirigidas. Las diferentes versiones usan una sintaxis diferente para esto y algunas de ellas requieren varias cargas automáticas.
Por lo tanto, la mejor opción es utilizar zshall y buscar PROMPT EXPANSION para conocer todas las reglas para su instalación particular de zsh. Tenga en cuenta que en los comentarios, cosas como "Yo uso Ubuntu 11.04 o 10.4 u OSX" no son muy significativas ya que no está claro qué versión de ZSH está utilizando. Ubuntu 11.04 no implica una versión más reciente 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 utilizar sin saber qué versión de ZSH es.
Para complementar todas las respuestas anteriores, otro truco conveniente es colocar la configuración del indicador de color en una función zsh. Allí puede definir variables locales para alias de comandos más largos, por ejemplo, rc=$reset_color
o definir sus propias variables de color. No olvide colocarlo en su .zshrc
archivo y llamar a la función que ha definido:
# Coloured prompt
autoload -U colors && colors
function myprompt {
local rc=$reset_color
export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt