Prompt de 256 cores no Zsh

14

Como posso definir o meu prompt para ser colorido em 256 cores? Estou procurando um equivalente ao prompt do bash:

  local DEFAULT="\[\033[0;39m\]"
  local ROOK="\[\033[38;5;24m\]"
  PS1="${ROOK}\$${DEFAULT} "
Sardathrion - contra o abuso de SE
fonte
1
Que vergonha para quem olhou, mas não votou!
phunehehe
export PS1='%{[38;5;24m%};%{[0m%} 'é exatamente o que eu queria.
Sardathrion - contra abuso de SE 25/11
1
Consulte também É possível usar cores nomeadas no Zsh além dos nomes ANSI?
Gilles 'SO- stop be evil'

Respostas:

9

Primeiro, verifique se o seu terminal suporta 256 cores, o que suponho que você já tenha. Segundo, use uma PS1variável com o código correto, por exemplo:

export PS1='%{^[[01;38;05;214;48;05;123m%}%m%{^[[0m%} '

Isso fornecerá um prompt com o nome do host em negrito, com uma cor de primeiro plano de 214 e uma cor de segundo plano de 123.

Observe que o ^[item é "digitado" digitando Ctrl+ ve Ctrl+ [. Veja este excelente artigo " Essa coisa de 256 cores " para obter a lista completa de atributos.

phunehehe
fonte
Sim, estou usando o terminal urxvt 256 color enable.
Sardathrion - contra abuso de SE 25/11
Como posso verificar se meu terminal suporta 256 cores? Por exemplo, o gnome-terminal (Ubuntu) suporta 256 cores?
Amelio Vazquez-Reina
Use este script (artigo completo frexx.de/xterm-256-notes ). gnome-terminalsuporta 256 cores.
Phonehehe
1
O host do link está quebrado (502 gateway incorreto).
Pikrass
1
@Pikrass Tenho 404 não encontrado.
Totor
13
export PS1='%F{214}%K{123}%m%k%f'

De man zshmisc:

   %F (%f)
          Start (stop) using a different foreground colour, if supported by the terminal.  The colour may be specified two ways: either as a numeric argument, as normal, or by a sequence in braces following the %F, for example %F{red}.  In the latter case the values allowed are as described for the fg zle_highlight attribute; see  Char
          acter Highlighting in zshzle(1).  This means that numeric colours are allowed in the second format also.

   %K (%k)
          Start (stop) using a different bacKground colour.  The syntax is identical to that for %F and %f.

Também para experimentá-lo, poderia ser usado assim:

$> print -P '%F{214}%K{123}%m%k%f'
ДМИТРИЙ МАЛИКОВ
fonte