zsh no volver a calcular mi indicador de shell
Esto podría ser un poco marginal, pero recientemente me mudé a zsh y tengo un problema al personalizar mi indicador de shell.
Parte de mi .zshrc se ve así:
# keeping this simple right now by just printing the date, but imagine this function would look for something specific when moving to a new directory each time
function parse_special {
print $(date)
}
autoload -U colors && colors
PS1="%{$fg[green]%}%n@%m %{$fg[blue]%}%c %{$fg[yellow]%}%{$(parse_special)%} %{$reset_color%}%# "
Cuando lanzo el terminal, todo se ve bien; Mi mensaje es lo que espero:
me@someHost ~ Wed Aug 8 22:56:22 PDT 2012 %
Pero cuando cd a otro directorio, aparece que no se vuelve a llamar a mi función parse_special para volver a calcular mi indicador personalizado (observe que la fecha no está cambiando):
me@someHost ~ Wed Aug 8 22:56:22 PDT 2012 % cd .ssh
me@someHost .ssh Wed Aug 8 22:56:22 PDT 2012 % cd ../workspace
me@someHost workspace Wed Aug 8 22:56:22 PDT 2012 %
¿Hay alguna manera en que pueda decirle a zsh que vuelva a calcular el indicador cada vez que esté a punto de mostrarlo?
Muchas gracias por cualquier sugerencia.
responder a cjhveal
Parece que a PS1 no le gusta configurarse con valores de comillas simples. Intenté lo siguiente:
local tp1="%{$fg[green]%}%n@%m%{$reset_color%}"
PS1="${tp1}"
print "PS1 set by tp1: ${PS1}"
local tp2='%{$fg[green]%}%n@%m%{$reset_color%}'
PS1="${tp2}"
print "PS1 set by tp2: ${PS1}"
Y tengo esta salida.
#inner stuff was green
PS1 set by tp1: %{%}%n@%m%{%}
#everything was uncolored
PS1 set by tp2: %{$fg[green]%}%n@%m%{$reset_color%}
También debo agregar, basado en la sugerencia de cjhveal, esto es lo que literalmente intenté. De nuevo, las comillas simples parecen estar arruinando las cosas.
function parse_special {
print $(date)
}
autoload -U colors && colors
local prompt_user='%{$fg[green]%}%n@%m%{$reset_color%}'
local prompt_root='%{$fg[red]%}%n@%m%{$reset_color%}'
local prompt_dir='%{$fg[blue]%}%c%{$reset_color%}'
local prompt_special='%{$fg[yellow]%}%{$(parse_special)%}%{$reset_color%}'
PS1="${prompt_user} ${prompt_dir}${prompt_special}%# "