16 Farben in ZShell

10

Ich scheine nur in der Lage zu sein, 8 Farben in meiner zshell-Eingabeaufforderung aufzurufen.

Beispiel:

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

Funktioniert gut. Jedoch,

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

Funktioniert nicht Grundsätzlich erscheint keine der "hellen" Farbvariationen.

Nach einigen Recherchen stellte ich fest, dass die Farben von zsh von der Setoption "Farben" aufgerufen werden.

tun

echo ${(o)color}

ergibt diese Ausgabe:

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

Wie Sie sehen können, sind nur die Standardfarben 8 verfügbar. Ich habe versucht, die "bg-" -Varianten zu verwenden, die auch die Ausgabe als Standardtextfarbe belassen.

Jede Hilfe, die Sie leisten können, wird sehr geschätzt. Ich könnte natürlich nur eine der normalen Farben verwenden, aber dann würde ich nichts lernen!

Tammer Ibrahim
quelle

Antworten:

8

Welchen Terminalemulator verwenden Sie? Sie können die Anzahl der unterstützten Farben überprüfen, indem Sie ausführen echotc Co. Zum Beispiel urxvtunterstützt my 88 Farben, aber xtermnur 8, und helle Variationen sind nicht enthalten.

Wenn ich es urxvteinführe, bekomme ich:

# 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} %.] "

Quellen: man zshall

Mischa Arefiev
quelle
3

Alle „Farben“, von denen Sie sprechen, sind nur Escape-Sequenzen in einer Form \e[{color_code}m. Die Zsh-Funktion colorsfügt lediglich einige assoziative zsh-Array-Variablen hinzu, die lesbare Farbnamen terminalen Escape-Sequenzen zuordnen . Somit können Sie entweder direkt verwenden

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

oder probieren Sie die Antwort von @Mischa Arefiev aus, sie ist besser lesbar. Beachten Sie, dass Escape-Sequenzen in jeder Shell funktionieren, während Konstruktionen wie %F{54}...nur in zsh funktionieren.

ZyX
quelle