Come funziona la tavolozza dei colori tmux?


140

Sto cercando di impostare qualcosa su grigio, ma non riesco a capire come. L'unica informazione nella pagina man sui colori che posso trovare è:

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.

Ho anche trovato un post sul blog che scorre attraverso i colori, ma non riesco proprio a farlo, e non voglio sedermi al terminale tutto il giorno a indovinare i numeri dei colori fino a quando uno funziona.

Risposte:


223

Puoi ottenere un elenco con questo bashframmento:

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

Quindi utilizzare colourxxxcon tmux.


18
usa $ reset per ripristinare il colore richiesto:>
lkraav

forse hai bisogno di colori a tre cifre? Questo script genera come color12ma che non è accettato da tmux come colore valido.
artfulrobot,

6
Il mio tmux(1.6) accetta anche colori come colour12(attenzione "u").
cYrus

1
Questa risposta è ancora utile! Mi ha aiutato a scegliere i colori che volevo.
Asfallows

6
Oh mio Dio! Un arcobaleno sul mio terminale. Giusto in tempo per celebrare l'uguaglianza del matrimonio negli Stati Uniti!
Garbelini,

75

Ho trovato questa immagine illuminante.

inserisci qui la descrizione dell'immagine


16
Puoi crearlo confor 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 (che sarà tmux 1.5) puoi anche usare i colori in stile esadecimale #abcdef che sono mappati alla voce della tavolozza 256 colori più vicina. Hai bisogno di virgolette poiché viene trattata come una stringa, mentre i nomi di colore regolari vengono trattati come costanti denominate. Si noti inoltre che la scorciatoia di 3 lettere (# f00) non è valida.

Esempio:

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

1
Puoi? Non riesco a vedere come ...
Eric

5
set-option message-bg "#abcdef"; le virgolette sono necessarie.
chepner,

Sembra anche che tu debba usare i 6 caratteri esadecimali completi, nessuna scorciatoia da 3 caratteri cioè #fffnon funzionerà, devi usare#ffffff
bschlueter



6

Sulla base della risposta di @cYrus, ho scritto uno script per suddividere l'output dei colori in N numero di colonne, dove N è il primo argomento

# 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

Provalo salvandolo in un file chiamato colors.sh, quindi ./colors.sh 4

Non dimenticare di chmod +x colors.shprima.


3
Lo script show-256-colors.sh può essere utile anche per mostrare i colori di sfondo.
Maxim Suslov,

Dovresti impostarlo come predefinito per dire, almeno 4 colonne, per distinguerlo dallo script di origine.
dbkeys,
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.