Si he entendido bien la pregunta, usted quiere que su indicador muestre el todo ruta de su directorio actual en azul pero con cada una de las barras inclinadas ("/") en rosa.
Desgraciadamente, no se puede hacer esto en su indicador.
Utilice el sistema incorporado precmd ()
función.
ZSH nos da una precmd
que es similar a la función de Bash PROMPT_COMMAND
. Permiten emitir un comando antes de que aparezca el prompt.
De todas formas tampoco recomendaría un prompt largo ya que dificulta mucho la usabilidad a la hora de introducir comandos. Poner el directorio completo por encima de su aviso es mucho mejor desde el punto de vista de la interfaz de usuario. El siguiente código lo consigue.
Simplemente ponga lo siguiente en su ~/.zprofile
.
precmd () { printf "\n"; pwd | awk -F "/" ' {for (i=1; i<=NF; i++) printf "\033[01;34m"$i"\033[38;5;206m/"; printf"\n" }' }
Y aquí están los resultados:
La captura de pantalla de arriba es mi ventana de iTerm mostrando que he atravesado las profundidades de mi /Applications/Firefox.app
con el directorio actual formateado en azul y separado por barras rosas.
Cómo funciona...
He ampliado la línea premcmd
de arriba para que sea multilínea y añadimos algunas variables para que podamos ver mejor lo que está pasando.
precmd() {
printf "\n";
pwd | awk -F "/" '{ blue="\033[01;34m"; \
pink="\033[38;5;206m"; \
for (i=1; i<=NF; i++) \
printf blue $i pink "/"; \
printf "\n"
}'
}
Esto es lo que significa:
printf "\n"
imprime una nueva línea char. Esto es por estética.
pwd
devuelve el nombre del directorio de trabajo ( man pwd
) que es entonces canalizado ("|") al siguiente comando, awk
( man awk
).
-F "/"
define el separador de campos a la barra diagonal; awk
es un espacio. Mantuve mi aviso a su configuración corta y sucinta.
Dentro del "programa" awk, delimitado por las llaves ("{" y "}") tenemos lo siguiente:
- variables
blue
y pink
se ajustan a su Códigos de escape ANSI \033[01;34m
y \033[38;5;206m
respectivamente.
- Luego tenemos un bucle for/do que itera por cada uno de los campos que
awk
ha procesado. NF
es el número total de campos.
printf blue $i
y printf pink "/"
imprime el nombre del directorio en azul y la barra diagonal en rosa