Qual é a diferença entre temas, prompts e temas baseados em terminal do ZSH?

0

Eu talvez tenha começado a pensar nisso, mas também não consegui encontrar uma explicação adequada para isso. Eu instalei recentemente o oh-my-zsh e ele vem com vários temas que mudam a aparência do "prompt" e também as cores usadas, junto com "onde" as cores são usadas em todo o texto.

Se eu entendi corretamente, existem várias cores "básicas", como algum tipo de cor vermelha, alguma cor verde, algum azul, etc. Os temas então podem dizer "Ei, eu quero uma cor azul aqui, e o azul específico cor deve ser esse valor hexadecimal ".

Estou confuso sobre o porquê então o emulador de terminal que um usa também pode aplicar um tema também. Estou usando o HyperJS e posso aplicar um tema para ele que parece se encarregar de todas as cores, no entanto, o layout do prompt ainda pode ser definido via oh-my-zsh.

Qual é a diferença entre os temas que estão sendo usados em oh-my-zsh e no tema de um terminal? Alguém pode explicar todo o colapso do que os temas estão fazendo e tal?

    
por Max McKinney 01.09.2018 / 04:47

1 resposta

0

O suporte de terminal para cores é especificado por vários padrões, por exemplo, ECMA-48 ou padrões posteriores que adicionaram mais cores. Nos dias de hoje, os terminais são em sua maioria janelas virtuais e não dispositivos de hardware dedicados e o terminal emulado geralmente pode ser alterado, definindo a TERM variável de ambiente - pode-se emular um terminal que não suporta cores , por exemplo.

Para terminais modernos, se você deseja cores, o conselho usual é ativar o suporte a 256 cores, geralmente via TERM=xterm-256color , já que os padrões antigos só especificam muito menos cores. Vários documentos detalham os códigos exatos usados para gerar cores, e isso pode ser feito manualmente

% print "3[31;5mDANGER DANGER WILL ROBINSON3[0m"
...

embora para portabilidade, geralmente é melhor usar uma biblioteca como ncurses ou na sua sintaxe ZSH específica para os vários códigos de cores

% print -P '%F{red}DANGER%f'
...
% print -P '%F{red}DANGER%f' | hexdump -C
00000000  1b 5b 33 31 6d 44 41 4e  47 45 52 1b 5b 33 39 6d  |.[31mDANGER.[39m|
00000010  0a                                                |.|
00000011
% print "3[31;5mxxx3[0m" | hexdump -C
00000000  1b 5b 33 31 3b 35 6d 78  78 78 1b 5b 30 6d 0a     |.[31;5mxxx.[0m.|
0000000f

O que o oh-my-zsh está fazendo é agrupar bits aleatórios de código similares aos acima (eventualmente) gerar algo como os códigos 3[31m mostrados acima que são consumidos pelo terminal e exibidos (ou não). Como o terminal manipula esses códigos é até o terminal, 3[31m ("cor de primeiro plano") pode ser exibido como verde (ou ignorado); conjuntos de tais configurações de cores no terminal podem ser chamados de temas pelo software do terminal; isso é completamente diferente dos temas do oh-my-zsh, apesar de usar o mesmo nome.

    
por 01.09.2018 / 17:03