In tmux 256 Farben zum Laufen bringen

177

Ich habe 256 Farben, die in ganz gut funktionieren konsole,. Ich dachte, ich würde es tmuxversuchen, weil es im Gegensatz zum Bildschirm den viModus zu unterstützen scheint . Ich stelle jedoch fest, dass die Farben meiner Eingabeaufforderung angezeigt werden, und dies liegt höchstwahrscheinlich daran, dass ich eine Eingabeaufforderung im 256-Farben-Modus habe. Was muss ich tun, um tmuxalle 256 Farben zu erkennen?

Xenoterracid
quelle
2
tmux -2Ich musste dies in terminator tun und ich war etwas überrascht. Die -2Flagge weist tmux an, die Verwendung von 256 Farben zu erzwingen ... ob es Ihrem Terminal gefällt oder nicht ... dun dun dunnn: P
Dylan

Antworten:

253

In den häufig gestellten Fragen zu Tmux wird ausdrücklich davon abgeraten , TERM in Ihrer Shell-Init-Datei auf etwas anderes als screen oder screen-256color einzustellen. Tun Sie es also nicht!

Folgendes verwende ich:

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

und in meiner .tmux.conf:

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

Das Aliasing tmuxauf " tmux -2" sollte ebenfalls ausreichen.

Dosenprimaten
quelle
4
Ich mag es am liebsten, es in der .tmux.conf zu setzen ... wenn man die Shell benutzt, um es zu setzen, scheint es einfach nicht richtig zu sein
Xenoterracide
6
Seltsam. Sie brauchen kein tmux -2OSX, aber Sie brauchen es mit Gnome Terminal. Danke für die Infos, die zu meinen Aliasen hinzugefügt wurden!
FX
1
In Kubuntu 13.10 brachte mir die Einstellung .tmux.conf alleine nicht die 256 Farben zurück (was das Hervorheben im visuellen Modus von vim herausnahm), aber der Alias ​​funktionierte. Wäre sicher lieber eine .tmux.conf Datei nur Lösung.
Jacob Dalton
1
Wenn ich in einen Ubuntu-Rechner (vom OS X-Terminal) einspielte, war das .tmux.conf-Standardterminal alles, was ich brauchte.
Duelin Marker
2
Für mich scheint alles, was ich tun muss, zu sein, TERM=screen-256color tmuxohne eine .tmux.confDatei zu erstellen . Vermisse ich etwas?
Joelostblom
39

Versuchen Sie, in Ihrem bashrc oder zshrc 256 Farben explizit festzulegen:

export TERM=xterm-256color

oder

export TERM=screen-256color

Wenn Sie Probleme damit haben, dass tmux die Hintergrundfarben nicht richtig löscht, wenn Sie die Einstellung für den Bildschirmbegriff verwenden, können Sie versuchen:

export TERM=screen-256color-bce
redigiert
quelle
1
Die erste Einstellung ist meine Standardeinstellung für TERM ... Ich habe gerade die andere 2 ausprobiert und meine Eingabeaufforderung zeigt nach dem Aufrufen von tmux immer noch keine Farben an. (Ich möchte darauf hinweisen, dass tmux unten Farben anzeigt) ... es scheint, dass wenn ich tmux eingebe, das TERM auf TERM = screen zurückgesetzt wird ... Vielleicht gibt es eine Möglichkeit, dies in einer Konfiguration zu überschreiben?
Xenoterracide
nvm ... Ich schätze, es funktioniert, wenn ich es in den rc meiner Shell lege ... wie ärgerlich ist, dass es die TERM-env-Variable ignoriert, die beim Ausführen von tmux gesetzt wird ... Ich schätze, ich muss eine Bedingung in meinen rc setzen.
Xenoterracide
1
-bce ist nicht kompatibel mit tmux. Tmux unterstützt nicht das Löschen von Hintergrundfarben:
Dustin Kirkland
1
Ich hatte dieses Problem mit Roxterm. Hoffentlich hilft das Hinzufügen von Roxterm dabei, die gleiche Lösung zu finden, die ich hatte. Ich würde in vim enden und das Auswählen von Linien würde sie verschwinden lassen. Sehr schwer zu suchen. roxterm wird standardmäßig nur mit $ TERM = xterm eingerichtet, was nicht gut ist.
BeepDog
5
-1 sollten Sie auch nicht unbedingt in Ihrer Shell-Initialisierungsdatei festlegen. Das Setzen auf xterm-256colorüberschreibt es auch innerhalb von tmux, und das Setzen auf screen-256coloraußerhalb von tmux kann dazu führen, dass Fehler angezeigt werden.
Nyuszika7h
19

Fügen Sie gemäß den tmux-FAQ Folgendes hinzu ~/.tmux.conf:

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

Dann füge diesen Alias ​​für tmux hinzu:

alias tmux='tmux -2'

Sie müssen die TERMVariable in Ihrem Profil oder beim Starten nicht überschreiben tmux.

Weitere Informationen: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim

user1338062
quelle
2
Die Konfiguration von tmux hat mir gereicht; Ich musste keinen Alias ​​festlegen (obwohl es wahrscheinlich nicht wehtun würde).
anishpatel
Die Konfiguration von tmux funktioniert nur bei mir. Der Alias ​​war nicht ausreichend.
Harry Moreno
12

Die neueste Version von ncurses wird mit einem terminfo-Eintrag für tmux-256color ausgeliefert (in den FAQ wird dies erwähnt). Ein Vorteil der Verwendung von tmux-256color gegenüber screen-256color ist beispielsweise, dass Kursivschrift korrekt gerendert wird (der Bildschirm unterstützt Kursivschrift nicht).

Wenn Sie also das neueste ncurses-Paket haben, funktioniert auch Folgendes:

set -g default-terminal "tmux-256color"
Gabriel Parent
quelle
Ich würde feststellen, dass diese Lösung erfordert tmux 2.6oder besser zu sein scheint
zzxyz
3

Ein wirklich wichtiger Hinweis, wenn Sie ein Ubuntu verwenden, das älter als Bionic (18.04) ist. Wenn Sie tmux 2.1oder älter sind und Sie wahrscheinlich sind, funktioniert im Grunde kein Ratschlag, den Sie online über tmux lesen, für irgendetwas.

tmux -Vist ein einfacher Test dafür. Wenn Sie sehen 2.1oder älter, können Sie tmux aus dem Quellcode erstellen oder ein inoffizielles Repository hinzufügen. Ich habe meinen tmux aktualisiert mit:

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

Persönlich, nach dem Upgrade auf 2.6, 1) funktionieren meine Schlüssel besser, 2) Online-Ratschläge funktionieren tatsächlich, 3) meine Farben sind nicht verrückt. Großer Fortschritt.

(Hier ist ein Link zur Repository-Seite, übrigens): https://launchpad.net/~hnakamur

zzxyz
quelle
2

Ich konnte nicht erklären, warum dies funktioniert, aber es löste das Problem für mich.

~ / .tmux.conf

set-option -g default-command bash
John Snow
quelle
1
Ich habe es als letzten Ausweg ausprobiert und überraschenderweise hat es funktioniert!
v0d1ch
1

Dies ist meine Lösung .... Ich bearbeite meine .bashrc-Datei und füge diese hinzu

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

Hoffentlich funktioniert es bei Ihnen

Wira Bhakti
quelle
10
Warum sich mit dem beschäftigen if? Sie könnten einfach die Variable setzen.
Joeytwiddle