Noções básicas sobre cores no zsh

4

Em este tópico , o yoda sugere a seguinte solução para usar cores em zsh

#load colors
autoload colors && colors
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
    eval $COLOR='%{$fg_no_bold[${(L)COLOR}]%}'  #wrap colours between %{ %} to avoid weird gaps in autocomplete
    eval BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
done
eval RESET='$reset_color'

Corrija-me se estiver errado, mas se eu entendi corretamente, autoload colors && colors permite que você chame cores pelo nome, enquanto o restante do script apenas as encapsula em ${ $} .

Isso me fez pensar sobre as seguintes perguntas:

  1. Existe uma maneira de saber quais cores são carregadas chamando autoload colors && colors ?
  2. Como sei quais cores são suportadas pelo meu terminal?
por Amelio Vazquez-Reina 26.08.2011 / 17:12

1 resposta

4

A função colors registra os nomes de cores e atributos semelhantes (negrito, sublinhado e assim por diante) na matriz associativa color . Esta matriz associa nomes a cadeias de atributos de terminal, que são números, por ex. 00normal , 42bg-green ,…

echo ${(o)color}

Se você quiser ver como a matriz é criada, observe a origem da função: which colors ou less $^fpath/colors(N) .

A função colors define apenas nomes e cadeias de escape (nas matrizes associativas fg e bg ) para as 8 cores padrão. Seu terminal pode ter mais. Consulte esta resposta para saber como explorar as cores disponíveis.

    
por 27.08.2011 / 20:37

Tags