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.
script
startenvim
, beendenvim
und dann beendenscript
und die resultierendetypescript
Datei anhängen ? Wiederholen Sie dann die gleichen Schritte mitTERM=screen-256color vim
.xterm-256color
Version sehen (Suche nach "38; 5;" in der Datei), aber nicht in derscreen-256color
. Zum Beispiel , wo es eine\e[38;5;81m
inxterm-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 verwendetTERM=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 inxterm-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). thxAntworten:
tmux
unterstützt nicht die Funktion terminfobce
(rückseitiges Löschen von Farben), mit dervim
geprüft wird, ob das Standardfarbschema verwendet werden soll.Dieses Merkmal von
tmux
wurde einige Male erwähnt -quelle
Ich hatte das ähnliche Problem schon einmal. Kommentare in Blau in Vim waren schwer zu lesen. In
.tmux.conf
setze ich dies:Und in
.vimrc
:Jetzt sieht es so aus und funktioniert sowohl in Gnome Terminal als auch in Cygwin:
quelle
bg=dark
in meinem vimrc hat es behoben.$TERM
Inneres und Äußerestmux
war es"xterm-256color"
und das explizite Setzen des Backgrouns tat es auch für mich. Vielen Dank!stterm
liege darin, dassxfce4-terminal
alles bequem aussah (Kommentare, diecyan
stattdessen erscheinenblue
, sind mit dunklem Hintergrund sehr schwer zu lesen). Nach dieser Änderung funktioniert alles gut. Aber denken Sie daran,unlet! skip_defaults_vim source $VIMRUNTIME/defaults.vim
zu vimrc-Datei hinzuzufügen , um Syntax-Hervorhebung usw. zu verwenden ...Dank der Analyse von @ egmont, welche Farben Vim wann ausgegeben hat
TERM=screen-256color
, wurde ich inspiriert, das Farbschema zu betrachten, das Vim in den beiden Szenarien verwendet.Vim berichtet, dass es
default
in beiden Fällen das Farbschema verwendet. Ich fand das seltsam, weil dasdefault
Farbschema auf Fedora 25 (/usr/share/vim/vim80/colors/default.vim
) nicht mit den Farben übereinstimmt, die ich tatsächlich sehe, wennTERM=xterm-256color
. Wenn ich das Farbschema explizit mit:colorscheme default
when einstelleTERM=xterm-256color
, ändert sich das Erscheinungsbild von Vim zu whenTERM=screen-256color
. Um die Farben wieder auf das zu bringen, was sie waren, als ich Vim zum ersten Mal startete, musste ich dasron
Farbschema verwenden. Fortschritt!Ich habe eine Frage-Ubuntu- Antwort gefunden , die darauf hinweist, dass Vim, wenn es meldet, dass es das
default
Farbschema verwendet, nicht unbedingt eindefault.vim
themenspezifisches Farbschema bedeutet. Wie die Antwort zeigt, entspricht ein dunkles Thema (das ich verwende) demron
Farbschema, so wie ich es oben entdeckt habe. (Obwohl dieser Beitrag in Bezug auf Ubuntu verfasst wurde, gehe ich davon aus, dass das OP GNOME verwendet.)Ich fand auch eine andere Frage , die das gleiche Problem zu beschreiben scheint, das ich habe. Ich bin darauf gestoßen, als ich gesucht habe, bevor ich diese Frage gestellt habe, aber aus irgendeinem Grund hat mich das Farbschema nicht als relevant empfunden.
Am Ende habe ich das getan, was @LapshinDmitry in seiner Antwort getan und explizit
colorscheme ron
in meiner~/.vimrc
Datei festgelegt hat. Egal, ob ich Vim innerhalb oder außerhalb von tmux starte, die Farben sehen gleich aus. Der einzige Nachteil ist, dass Vim nicht automatisch auf das "Standard" -Farbschema für helle Designs umschaltet, wenn ich jemals mein Desktop-Design von einem dunklen auf ein helles Design umstellepeachpuff
. Ich kann damit leben, da ich wahrscheinlich nie mein Thema ändern werde.Ich werde diese Antwort nicht akzeptieren, da ich in Betracht ziehe, das Farbschema explizit
~/.vimrc
als Problemumgehung und nicht als Lösung festzulegen. Wenn jemand erklären kann, warum Vim abhängig vom Wert von ein anderes "Standard" -Farbschema lädtTERM
, nehme ich diese Antwort gerne an, da ich mehr daran interessiert bin, die Grundursache zu verstehen. Ich vermute, es hat etwas damit zu tun, wie Vim die Terminalfunktionen zwischen den beiden terminfo-Dateien interpretiert.quelle
vim
sich das so verhält. Schließlich sollte diebce
Fähigkeit nichts mit der verfügbaren Anzahl von Farben zu tun haben.bce
Fähigkeit des Terminals, 2) falls vorhanden, wählen Sie das Farbschema "A", 3) andernfalls wählen Sie das Farbschema "B". Ich glaube, die Farbtiefe ist in beiden Fällen gleich (dh 256 Farben, wiet_Co
gezeigt). Es ist nur so, dass das Farbschema "B" auf meinem System nur eine 8-Farben-Palette verwendet, obwohl 256 Farben möglich sind (ich denke , das erklärt, was Sie in Ihrer Typoskript-Analyse beobachtet haben; bitte korrigieren Sie mich, wenn ich falsch liege). Denken Sie daran, dass nach dem Ausführen:colorscheme ron
in derselben Vim-Sitzung Escape-Sequenzen mit 256 Farben angezeigt werden.vim
hat wirklich seltsame Designentscheidungen.Das ist richtig und funktioniert für mich. Versuchen Sie es mit einem anderen Terminal (ich benutze urxvt), um zu sehen, ob Gnome Terminal das Problem ist. Um die Umstellung zu erleichtern, müssen Sie
Überprüfen Sie auch
COLORTERM
(meine ist aufrxvt
) undunset TERMCAP
.quelle
TERM
isrxvt-unicode-256color
) mit einem passenden~/.Xdefaults
und leider immer noch unterschiedlichen Farben innerhalb und außerhalb von tmux durchgeführt. Für das Gnome-Terminal-SzenarioCOLORTERM
isttruecolor
undTERMCAP
ist sowohl innerhalb als auch außerhalb von tmux leer. Für das urxvt-SzenarioCOLORTERM
istrxvt-xpm
außerhalb undtruecolor
innerhalb von tmux, währendTERMCAP
sowohl innerhalb als auch außerhalb von tmux leer ist.:help xterm-true-color
Vim-Standardkonfiguration an oder probieren Sie sie aus.termguicolors
in meinen.vimrc
und:set termguicolors?
Berichtennotermguicolors
in beiden Fällen. Ich werde mir das Hilfethema ansehen, auf das Sie verwiesen haben. Vielen Dank!Zu meiner eigenen Information später, als ich zweifellos meine nächste Maschine google.
Verwenden Sie diese Anweisungen, um die erforderlichen Binärdateien und DLLs in den PATH von Git Bash zu laden:
https://blog.pjsen.eu/?p=440
Verwenden Sie diese Befehle, um Folgendes zu konfigurieren:
quelle