Far funzionare 256 colori in tmux


177

Ho 256 colori che funzionano perfettamente konsole,. Ho pensato di tmuxprovare perché, a differenza dello schermo, sembra supportare la vimodalità. Tuttavia, trovo che i colori del mio prompt vengano visualizzati e molto probabilmente perché ho un prompt in modalità 256 colori. Cosa devo fare tmuxper riconoscere tutti i 256 colori?


2
tmux -2Ho dovuto farlo in terminatore e sono rimasto un po 'sorpreso. La -2bandiera dice a tmux di forzare l'uso di 256 colori ... che piaccia o no al tuo terminale ... dun dun dunnn: P
Dylan

Risposte:


253

Le FAQ di Tmux sconsigliano esplicitamente di non impostare TERM su qualcosa di diverso da screen o screen-256color nel file di shell shell, quindi non farlo!

Ecco cosa uso:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

e nel mio .tmux.conf:

set -g default-terminal "screen-256color"

Aliasing tmux" tmux -2" dovrebbe anche fare il trucco.


4
Mi piace il modo di impostarlo nel migliore .tmux.conf ... usare la shell per impostarlo non sembra giusto
xenoterracide

6
Strano. Non è necessario tmux -2su OSX ma è necessario con Gnome Terminal. Grazie per le informazioni, aggiunte ai miei alias!
FX

1
In Kubuntu 13.10, l'impostazione .tmux.conf da sola non mi ha restituito i 256 colori (che ha eliminato l'evidenziazione in modalità visiva vim) ma l'alias ha funzionato. Preferirei sicuramente una soluzione unica per il file .tmux.conf.
Jacob Dalton,

1
ssh in una macchina Ubuntu (dal Terminale OS X), il terminale predefinito .tmux.conf era tutto ciò di cui avevo bisogno.
marcatori di duelli

2
per me sembra che tutto ciò che devo fare è TERM=screen-256color tmuxsenza creare un .tmux.conffile. Mi sto perdendo qualcosa?
joelostblom,

39

Prova a impostare esplicitamente 256 colori nel tuo bashrc o zshrc:

export TERM=xterm-256color

o

export TERM=screen-256color

Se si verificano problemi con tmux che non cancella correttamente i colori di sfondo quando si utilizza l'impostazione del termine dello schermo, è possibile provare:

export TERM=screen-256color-bce

1
la prima è la mia impostazione TERM predefinita ... Ho appena provato le altre 2 e il mio prompt non mostra ancora i colori una volta inserito tmux. (Vorrei notare che tmux mostra i colori in basso) ... sembra che quando inserisco tmux reimposta il TERM a TERM = schermo ... forse c'è un modo per sovrascriverlo in una configurazione?
xenoterracide,

nvm ... Immagino che metterlo in un RC della mia shell funzioni ... quanto sia fastidioso che ignori la variabile env TERM impostata quando eseguo tmux ... Immagino che dovrò mettere un condizionale nel mio rc.
xenoterracide,

1
-bce non è compatibile con tmux. Tmux non supporta la cancellazione del colore di sfondo:
Dustin Kirkland,

1
Ho avuto questo problema con roxterm. Spero che aggiungere roxterm a questo aiuterà le persone a trovare la stessa soluzione che ho avuto. Vorrei finire in vim e selezionare le linee li farebbe sparire. Estremamente difficile da cercare. roxterm di default si configura con solo $ TERM = xterm, il che non va bene.
BeepDog

5
-1, non si dovrebbe impostare incondizionatamente nel file di inizializzazione della shell. Impostandolo su xterm-256colorlo sovrascriverà anche all'interno di tmux, e impostarlo al di screen-256colorfuori di tmux potrebbe portare alla visualizzazione di bug.
nyuszika7h,

19

Come da FAQ di tmux , aggiungi questo al tuo ~/.tmux.conf:

set -g default-terminal "screen-256color"

Quindi aggiungi questo alias per tmux:

alias tmux='tmux -2'

Non è necessario sostituire la TERMvariabile nel profilo o all'avvio tmux.

Ulteriori informazioni: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim


2
Configurare tmux è stato abbastanza per me; Non avevo bisogno di impostare l'alias (anche se probabilmente non avrebbe fatto male).
anishpatel,

Configurare tmux da solo funziona per me. L'alias non era sufficiente.
Harry Moreno,

12

La versione più recente di ncurses viene fornita con una voce terminfo tmux-256color (la FAQ menziona questo). Ad esempio, un vantaggio dell'uso di tmux-256color su screen-256color è che il corsivo è visualizzato correttamente (lo schermo non supporta il corsivo).

Quindi, se hai l'ultimo pacchetto ncurses, funzionerà anche:

set -g default-terminal "tmux-256color"

Vorrei notare che questa soluzione sembra richiedere tmux 2.6o meglio
zzxyz,

3

Nota davvero importante qui se stai usando Ubuntu più vecchio di Bionic (18.04). Se sei in esecuzione tmux 2.1o meno, e probabilmente lo sei, praticamente nessun consiglio che leggi online su tmux funzionerà..per qualsiasi cosa.

tmux -Vè un test facile per questo. Se vedi 2.1o meno, puoi creare tmux dalla fonte oppure puoi aggiungere un repository non ufficiale. Ho aggiornato il mio tmux con:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Personalmente, dopo l'aggiornamento a 2.6, 1) le mie chiavi funzionano meglio, 2) la consulenza online funziona davvero, 3) i miei colori non sono pazzi. Grande miglioramento

(Ecco un link alla pagina del repository, tra l'altro): https://launchpad.net/~hnakamur


2

Non ho potuto spiegare perché questo funzioni, ma ha risolto il problema per me.

~ / .Tmux.conf

set-option -g default-command bash

1
Ho provato questo come ultima risorsa e sorprendentemente ha funzionato!
v0d1ch,

1

Questa è la mia soluzione .... Modifico il mio file .bashrc e aggiungo questo

if [ "$TERM" != "xterm-256color" ]; then
      export TERM=xterm-256color
    fi

Spero che funzioni nel tuo


10
Perché preoccuparsi di if? Potresti semplicemente impostare la variabile.
joeytwiddle,
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.