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.