16 colori in ZShell


11

Mi sembra di poter chiamare solo 8 colori nel mio prompt di zshell.

Esempio:

PROMPT="[%n@%{$fg[magenta]%}%m%{$reset_color%} %.]
%# "

Funziona bene. Però,

PROMPT="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.]
%# "

Non funziona Fondamentalmente, nessuna delle variazioni di colore "luminose" appare.

Dopo aver fatto qualche ricerca, ho scoperto che i colori di zsh sono chiamati dai set di "colori".

fare

echo ${(o)color}

produce questo output:

00 01 02 03 04 05 07 08 22 23 24 25 27 28 30 30 30 30 31 31 32 32 33 33 34 34 35 35 36 36
37 37 39 39 40 40 41 42 43 44 45 46 47 49 bg-black bg-blue bg-cyan bg-default bg-green
bg-magenta bg-red bg-white bg-yellow black blink blue bold conceal cyan default faint green
magenta no-blink no-conceal no-reverse no-standout no-underline none normal red reverse
standout underline white yellow

Come puoi vedere, sono disponibili solo gli 8 colori standard. Ho provato ad usare le varianti "bg-", che lasciano anche l'output come colore predefinito del testo.

Qualsiasi aiuto che puoi fornire sarà molto apprezzato. Naturalmente, potrei usare solo uno dei colori normali, ma poi non imparerei nulla!

Risposte:


9

Quale emulatore di terminale stai usando? È possibile verificare il numero di colori supportati eseguendo echotc Co. Ad esempio, my urxvtsupporta 88 colori, ma xtermsupporta solo 8 colori e le variazioni luminose non sono incluse.

Se lo eseguo urxvtottengo:

# Dark magenta/violet:
PS1="[%F{34}%n%F{reset}@%F{magenta}%m%F{reset} %.] " 
# Bright Thistle purple:
PS1="[%F{54}%n%F{reset}@%F{magenta}%m%F{reset} %.] "

fonti: man zshall


4

Tutti i "colori" di cui stai parlando sono solo sequenze di escape in una forma \e[{color_code}m. La funzione Zsh colorsnon fa altro che aggiungere alcune variabili array associative zsh che mappano nomi di colori leggibili dall'uomo alle sequenze di escape terminali. Quindi puoi utilizzare direttamente

PS1=%{$'\e[54m'%}...

o prova la risposta di @Mischa Arefiev, è più leggibile. Nota che le sequenze di escape funzionano in qualsiasi shell, mentre costruzioni come %F{54}...funzionano solo in zsh.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.