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 TERM
Variable 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-256color
und der screen-256color
Terminal-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 termcap
innerhalb 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.conf
auf 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-256color
Version sehen (Suche nach "38; 5;" in der Datei), aber nicht in der screen-256color
. Zum Beispiel , wo es eine \e[38;5;81m
in xterm-256color
(Farbe # 81 der 256-Farben - Palette, ein mittlerer Blauton), screen-256color
enthält \e[34m
statt (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-256color
Version 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[34m
Farbe, die zweite mit \e[38;5;81m
. Ich weiß nicht, was hier los ist.
set -g default-terminal "screen.xterm-256color"
in ~/.tmux.conf
und laden Sie die Konfiguration in tmux (<Cs>: source-Datei ~ / .tmux.conf) arbeitete für mich (Highlight Ausgabe). thx
script
startenvim
, beendenvim
und dann beendenscript
und die resultierendetypescript
Datei anhängen ? Wiederholen Sie dann die gleichen Schritte mitTERM=screen-256color vim
.