Wie funktioniert die tmux-Farbpalette?


140

Ich versuche, etwas auf Grau zu setzen, kann aber nicht herausfinden, wie. Die einzige Information in der Manpage über Farben, die ich finden kann, ist:

message-bg colour
  Set status line message background colour, where colour is one of:
  black, red, green, yellow, blue, magenta, cyan, white, colour0 to
  colour255 from the 256-colour palette, or default.

Ich habe auch einen Blog-Post gefunden, der durch Farben iteriert, aber ich kann es nicht recht fassen und möchte nicht den ganzen Tag am Terminal sitzen und Farbnummern erraten, bis einer funktioniert.

Antworten:


223

Sie können eine Liste mit diesem bashSnippet erhalten:

for i in {0..255}; do
    printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n"
done

Dann verwenden Sie colourxxxmit tmux.


18
Verwenden Sie $ reset, um die sofortige Farbwiederherstellung zu
starten

vielleicht brauchst du dreistellige farben? Dieses Skript gibt wie color12folgt aus, aber dies wird von tmux nicht als gültige Farbe akzeptiert.
Artfulrobot

6
Mein tmux(1.6) akzeptiert auch Farben wie colour12(beachte das "u").
CYRUS

1
Diese Antwort ist immer noch hilfreich! Hat mir geholfen, die gewünschten Farben auszuwählen.
Asfallows

6
Oh mein Gott! Ein Regenbogen auf meinem Terminal. Pünktlich zur Feier der Gleichstellung der Ehe in den USA!
Garbelini

75

Ich fand dieses Bild aufschlussreich.

Bildbeschreibung hier eingeben


16
Sie können es mitfor i in {0..255}; do printf "\x1b[38;5;${i}mcolor%-5i\x1b[0m" $i ; if ! (( ($i + 1 ) % 8 )); then echo ; fi ; done
12431234123412341234123

22

In Subversion (was tmux 1.5 sein wird) können Sie auch hexadezimale #abcdef-Farben verwenden, die dem nächsten 256-Farben-Paletten-Eintrag zugeordnet sind. Sie benötigen Anführungszeichen, da dies als Zeichenfolge behandelt wird, während reguläre Farbnamen als benannte Konstanten behandelt werden. Beachten Sie auch, dass die Kurzschreibweise mit 3 Buchstaben (# f00) ungültig ist.

Beispiel:

set pane-active-border-bg red # no quotes for name
set pane-active-border-bg "#ff0000" # quotes for rgb

1
Können Sie? Ich kann nicht sehen, wie man ...
Eric

5
set-option message-bg "#abcdef"; Die Anführungszeichen sind notwendig.
chepner

Sie müssen anscheinend auch die vollen 6 hexadezimalen Zeichen verwenden, keine 3 char-Abkürzungen, dh es #fffwird nicht funktionieren, Sie müssen#ffffff
bschlueter



6

Aufbauend auf der Antwort von @cYrus habe ich ein Skript geschrieben, um die Ausgabe der Farben in N Spalten zu unterteilen, wobei N das erste Argument ist

# colors.sh

#!/bin/bash
if [ -z $1 ]; then
    BREAK=1
else
    BREAK=$1
fi
for i in {0..255} ; do
    printf "\x1b[38;5;${i}mcolour${i} \t"
    if [ $(( i % $BREAK )) -eq $(($BREAK-1)) ] ; then
        printf "\n"
    fi
done

Versuchen Sie es, indem Sie es in einer Datei namens colors.sh speichern ./colors.sh 4

Vergiss das nicht chmod +x colors.sh.


3
Das Skript show-256-colors.sh kann nützlich sein, um auch Hintergrundfarben anzuzeigen .
Maxim Suslov

Sie sollten standardmäßig mindestens 4 Spalten angeben, um es vom Ursprungsskript zu unterscheiden.
Dbkeys
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.