GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tmux, Term und 256-Farben-Unterstützung?

Einführung

Meine Frage ergibt sich aus der Notwendigkeit, das Warum zu verstehen Ich habe jetzt (nach mehreren Versuchen) Terminal und tmux unterstützt 256 Farben und tput colors sagt mir, es gibt nur 8 von ihnen.

Hintergrund

Fangen wir von vorne an.

Ich verwende ein Ubuntu Schachtel, Guake , tmux , Vim und ich liebe das Thema Solarized . Sie sahen ziemlich schrecklich aus, also entschied ich mich, die 256-Farben-Unterstützung zu aktivieren und ein bisschen herumzuspielen.

Mal sehen, was mit meinem Terminal passiert . tput colors sagt, es gibt 8 Farben. Ich persönlich habe sie links auf lila gesetzt und natürlich rechts haben wir 2 verschiedene Blautöne. $TERM sagt xterm . (Um die farbigen ls zu haben Ich eval dies in meiner .bashrc .)

Vim sieht auch gut aus, obwohl ich es mit 256 aufrufe Flagge in einer Umgebung, in der 256 Farben nicht sind unterstützt.

set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Der einzige, der sich über den reduzierten Farbraum beschwert, ist tmux . Aufruf von tmux liefert die „falschen“ erwarteten Ergebnisse.

Aber Aufruf von tmux mit dem -2 flag lässt alles magisch gut funktionieren .

Jetzt verstehe ich nur noch -2 entspricht export TERM=screen-256color (Quelle).

Guake verhält sich analog zu Terminal und beide antworten xterm auf die Frage echo $TERM .

Frage

Versteht im Grunde irgendjemand, warum alles funktioniert, auch wenn es nicht sollte?

  • Bin ich sadistisch, dass ich mich beschwere, warum die Dinge funktionieren? Vielleicht.
  • Gibt es einen besseren Grund? Sicher:Ich möchte das Erscheinungsbild anderer Ubuntu-Boxen in meinem Büro korrigieren und ich möchte verstehen, warum Dinge funktionieren oder nicht funktionieren.

Zusätzliche Experimente

Ausführen dieses Skripts (leicht modifiziert) auf meinem xterm liefert folgendes Ergebnis:256 Farben, aber nur 16 werden korrekt angezeigt.

Wenn Sie dann das Profil des Terminals ändern, ändern sich auch diese 16 Farben.

Weitere Tests folgen.

Von links nach rechts, von oben nach unten haben wir Solarized Farbthema, dircolor ansi-dark und 256dark , dann Standard (Tango ) Farbschema, dircolor ansi-dark und 256dark .

Beobachtung :theoretisch die dircolor ansi-dark auf Solarized das Farbschema sollte genau dem dircolor entsprechen 256dark . Dies geschieht nicht eindeutig für die spezifischen aufgelisteten Dateien. Stattdessen passiert dies durchaus, wenn sich im Arbeitsverzeichnis Ordner befinden , Textdateien und symbolische Links . Fazit :Beim Codieren von 256dark wurde nicht viel Aufmerksamkeit geschenkt Farben.

Vorläufige Schlussfolgerungen

xterm unterstützt 256 Farben, trotz tput colors sagt. Programme können auf ansi verweisen Palette (vom Benutzer anpassbar) oder definieren Sie ihre Farben, indem Sie aus insgesamt 256 Farben auswählen.

Akzeptierte Antwort:

Es gibt einige Informationen zur 256-Farben-Unterstützung in der tmux-FAQ.

Verwandte:Liste der Shells, die das Schlüsselwort "local" zum Definieren lokaler Variablen unterstützen?

Die Erkennung der Anzahl der vom Terminal unterstützten Farben ist aus historischen Gründen leider nicht einfach. Eine Erklärung finden Sie unter Prüfen, wie viele Farben mein Terminalemulator unterstützt. Das bedeutet, dass

  • tmux kann nicht zuverlässig feststellen, ob das Terminal mehr als 8 Farben unterstützt;
  • tmux kann der Anwendung nicht zuverlässig mitteilen, dass es mehr als 8 Farben unterstützt.

Wenn Sie sich in tmux befinden, ist das Terminal, mit dem Sie interagieren, tmux. Es unterstützt nicht alle Steuersequenzen von xterm. Insbesondere wird der OSC 4 ; … Steuersequenz zum Abfragen oder Setzen von Farbwerten. Sie müssen das verwenden, während Sie es direkt in xterm ausführen, außerhalb von tmux.

Wenn Sie tmux -2 ausführen , dann beginnt tmux mit 256-Farben-Unterstützung, auch wenn es nicht denkt, dass Ihr Terminal 256 Farben unterstützt (was ziemlich häufig vorkommt).

Standardmäßig bewirbt sich tmux als screen ohne 256-Farben-Unterstützung. Sie können den Wert von TERM ändern in .tmux.conf um die 256-Farben-Unterstützung anzuzeigen:

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

Sie können TERM=xterm-256color verwenden oder TERM=screen-256color auf Ubuntu. Diese Werte verursachen nur dann Probleme, wenn Sie sich bei einem Remote-Computer anmelden, der keinen termcap/termininfo-Eintrag für diese Namen hat. Sie können die Einträge in Ihr Home-Verzeichnis auf dem entfernten Rechner kopieren; dies funktioniert mit den meisten modernen terminfo-Implementierungen.

# From the Ubuntu machine to a machine that doesn't have *-256color terminfo entries
ssh somewhere.example.com mkdir -p .terminfo/s .terminfo/x
scp -p /lib/terminfo/s/screen-256color somewhere.example.com:.terminfo/s/
scp -p /lib/terminfo/x/xterm-256color somewhere.example.com:.terminfo/x/

Linux
  1. RedHat und SUSE haben angekündigt, die Unterstützung für OpenLDAP zurückzuziehen

  2. Welche Terminal-Emulatoren unterstützen den Tmux-Steuerungsmodus?

  3. Medleytext – Eine intuitive und stilvolle Notizen-App für Programmierer

  4. tmux:hängt und lädt nicht und reagiert nicht auf Optionsbefehle

  5. Gibt es eine Möglichkeit, dass Nano die automatische Vervollständigung und das automatische Schließen von Klammern unterstützt?

Anpassen meines Linux-Terminals mit tmux und Git

Teilen von Linux-Terminalsitzungen mit Tmux und Screen

So installieren und verwenden Sie Tmux (Terminal Multiplexer) unter Linux

So fügen Sie PHP-FPM-Unterstützung auf Apache und Nginx-Webserver auf Ubuntu 18.04 hinzu

So installieren und verwenden Sie Tmux (Terminal Multiplexer) im Linux-System

grep for term und schließt einen anderen Begriff aus