%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})
Isso deve funcionar para alterar o nome do host ( %m
) de uma cor diferente (vermelha) se você for root. Eu não tenho um shell zsh para testá-lo, mas parece correto.
Veja por que:
%(x.true.false)
:: Com base na avaliação do primeiro termo do ternário, execute a declaração correta. '!' é verdade se o shell for privilegiado. De fato, %#
é um atalho para %(!.#.%)
.
%{\e[1;31m%} %m %{\e[0m%}
:: o %{\e[X;Ym%}
é a sequência de escape de cor com X como formatação (negrito, sublinhado, etc) e Y como o código de cor. Note que você precisa abrir e fechar a seqüência em torno do termo que você está olhando para mudar a cor, caso contrário, tudo depois desse ponto será qualquer cor. Eu adicionei espaços aqui em torno do termo de prompt %m
para maior clareza.
link tem mais opções e detalhes sobre as tabelas de cores e outras opções disponíveis para zsh.