Umgebung:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- GNOME-Terminal 3.22.1 mit VTE Version 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (12. September 2016, kompiliert am 22. Februar 2017, 16:26:11 Uhr)
- tmux 2.2
Ich habe vor kurzem angefangen, tmux zu verwenden und festgestellt, dass sich die Farben in Vim ändern, je nachdem, ob ich innerhalb oder außerhalb von tmux arbeite. Unten sehen Sie Screenshots von Vim außerhalb (links) und innerhalb (rechts) von tmux, während Sie ein Git-Diff betrachten:
Meine TERMVariable ist
- Außerhalb von tmux:
xterm-256color - In tmux:
screen-256color
Vim meldet diese Terminaltypen wie erwartet (via :set term?):
- Außerhalb von tmux:
term=xterm-256color - In tmux:
term=screen-256color
Vim meldet außerdem, dass beide Instanzen im 256-Farben-Modus ausgeführt werden (über :set t_Co?):
- Außerhalb von tmux:
t_Co=256 - In tmux:
t_Co=256
Es gibt viele ähnliche Fragen bezüglich der Ausführung von Vim im 256-Farben-Modus in tmux (die beste Antwort, die ich gefunden habe, ist hier ), aber ich denke nicht, dass das mein Problem ist, wenn man die obigen Informationen berücksichtigt .
Ich kann das Problem außerhalb von tmux duplizieren, wenn ich Vim mit dem folgenden Terminaltyp ausführe screen-256color:
$ TERM=screen-256color vim
Das lässt mich glauben, dass es einfach einen Unterschied zwischen der xterm-256colorund der screen-256colorTerminal-Fähigkeit gibt, der den Unterschied in der Farbe verursacht. Was führt zu der im Titel gestellten Frage: Was bewirkt speziell in den Terminalfunktionen, dass die Vim-Farben unterschiedlich sind? Ich sehe die Unterschiede zwischen dem Laufen :set termcapinnerhalb und außerhalb von tmux, bin aber gespannt, welche Variablen tatsächlich den Unterschied im Verhalten verursachen.
Ist es unabhängig von der vorherigen Frage möglich, dass die Vim-Farben innerhalb oder außerhalb von tmux konsistent sind? Einige Dinge, die ich ausprobiert habe, sind:
- Das Standardterminal, das tmux verwendet, explizit
~/.tmux.confauf verschiedene Werte einstellen (einige entgegen dem Rat der tmux- FAQ ):
set -g default-terminal "screen-256color"
set -g default-terminal "xterm-256color"
set -g default-terminal "screen.xterm-256color"
set -g default-terminal "tmux-256color"
- Starten von tmux mit
tmux -2.
In allen Fällen zeigte Vim innerhalb von tmux weiterhin verschiedene Farben an.
xterm-256colorVersion sehen (Suche nach "38; 5;" in der Datei), aber nicht in der screen-256color. Zum Beispiel , wo es eine \e[38;5;81min xterm-256color(Farbe # 81 der 256-Farben - Palette, ein mittlerer Blauton), screen-256colorenthält \e[34mstatt (die Standard - blau der 8-Farbpalette). Die Hauptfrage ist also, warum vim die 256-Farben-Palette im Falle von nicht verwendet TERM=screen-256color.
xterm-256colorVersion den Bildschirm zweimal zu drucken scheint, zuerst mit den alten Farben und dann mit der 256-Farben-Palette. Suchen Sie zB nach "F1" in der Datei, finden Sie zwei Übereinstimmungen in xterm-256color, die erste mit \e[34mFarbe, die zweite mit \e[38;5;81m. Ich weiß nicht, was hier los ist.
set -g default-terminal "screen.xterm-256color"in ~/.tmux.confund laden Sie die Konfiguration in tmux (<Cs>: source-Datei ~ / .tmux.conf) arbeitete für mich (Highlight Ausgabe). thx


scriptstartenvim, beendenvimund dann beendenscriptund die resultierendetypescriptDatei anhängen ? Wiederholen Sie dann die gleichen Schritte mitTERM=screen-256color vim.