Ich habe das gleiche Problem wie der Fragesteller in256-Farben-Unterstützung für Vim-Hintergrund in tmux.
In meinem normalen Terminal mit zsh
habe ich keine Probleme mit der Hintergrundfarbe in vim
, aber wenn ich es in ausführe tmux
, treten Probleme mit den Hintergrundfarben auf.
Offenbar besteht ein Problem bei der Verwendung von screen
anstelle von xterm
:
Außerhalb von Tmux: echo $TERM
ergibt screen
Innerhalb von Tmux: echo $TERM
ergibtxterm
In meiner .zshrc und .tmux.conf habe ich gesetzt
TERM=screen-256color
aber es bewirkt nichts. (Ich habe es auch versucht TERM=screen
)
Wie kann ich tmux
die Verwendung erzwingen screen
?
BEARBEITEN: Danke an htor, ich habe es set -g default-terminal "screen"
(auch versucht set -g default-terminal "screen-256color"
) in .tmux.conf und in .zshrc hinzugefügt export TERM=screen-256color
.
Jetzt bekomme ich:
Außerhalb von Tmux: echo $TERM
ergibt screen-256color
Innerhalb von Tmux: echo $TERM
ergibt echoscreen-256color
(<- sieht ein bisschen komisch aus, ist die Ausgabe korrekt?)
Was kann ich sonst noch tun, um das Problem mit der Hintergrundfarbe in vim innerhalb von tmux zu lösen?
Antwort1
Wie hier erklärt, deaktivierenHintergrundfarbe löschen(BCE) durch Löschen der t_ut
Terminaloption ( :set t_ut=
in Vim ausführen und dann Control+ drücken L, um die Anzeige des Terminals zu aktualisieren), damit Farbschemata ordnungsgemäß funktionieren, wenn Vim innerhalb von tmux und GNU Screen verwendet wird.
Antwort2
tmux
So legen Sie die Standardterminalvariable fest .tmux.conf
:
set -g default-terminal "screen"
Die Shell-Syntax zum Setzen von Variablen funktioniert in nicht .tmux.conf
. In Ihrer .zshrc
sollten Sie den Wert von exportieren, TERM
um sicherzustellen, dass alle Shells in Ihrer Umgebung diesen Wert übernehmen:
export TERM=screen-256color