tmux vim colorscheme tło nie jest wyświetlane

12

Zainstalowałem tmux, ale teraz kolory w trybie tekstowym vim nie wypełniają poprawnie koloru tła. Oto jak to wygląda z colorscheme xoria256 w normalnym terminalu Ubuntu 14.10:

wprowadź opis zdjęcia tutaj

I tutaj, kiedy uruchamiam go w dokładnie tym samym terminalu po tmux:

wprowadź opis zdjęcia tutaj

Jak widać, pulpit wyświetla się wszędzie tam, gdzie nie ma tekstu w vimie. Mam 256-kolorowy terminal.

Mój plik .tmux.conf:

~ cat .tmux.conf
set -g mode-mouse on
set -g default-terminal "screen-256color"

i mam terminal 256 kolorów:

~ tput colors
256

Jak sprawić, by tmux działał poprawnie z 256-kolorowymi kolorami Vima, które działają dobrze w normalnym terminalu?

Thomas Browne
źródło
Z mojego doświadczenia wynika, że ​​tmux zachowuje się dziwnie po uruchomieniu w środku gnome-terminal. Spróbuj uruchomić tmux za pomocą TERM=xterm tmuxi sprawdź, czy zachowuje się inaczej. Jeśli xtermnie działa, spróbuj xterm-256colorlub xterm-color.
jw013
@ jw03 Niestety żadna z tych opcji nie działała, aby to naprawić. Identyczne zachowanie. To samo zachowanie, jeśli uruchomię tmux wewnątrz terminatora
Thomas Browne
1
Jaka jest wartość powłoki w tmuxie $TERM? Jeśli nie screen-256color, spróbuj uruchomić vimjako TERM=screen-256color vim, a następnie upewnij się, że nie ma zestawów skryptów startowych TERM(lub, jeśli musisz to zrobić, aby obejść błędne oprogramowanie, upewnij się, że najpierw sprawdza oryginalną wartość).
Ry-
@minitech: Bingo. Miałem xterm-256color, podczas gdy screen-256color rozwiązuje problem. Jeśli udzielisz odpowiedzi, zaakceptuję ją.
Thomas Browne,
To zadziałało dla mnie: stackoverflow.com/a/15095377/96855
Olivier Lalonde

Odpowiedzi:

5

Dzieje się tak, gdy w środowisku Vima TERMnie jest ustawione poprawnie screen[-256color], zwykle przez jakiś skrypt startowy powłoki. Jeśli tak jest - na przykład masz

TERM=xterm-256color

, usuń go lub upewnij się, że sprawdza oryginalną wartość TERMprzed zmianą, np

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi
Ry-
źródło
8

w twoim .tmux.conf:

set -g default-terminal "screen-256color"
Wayne Walker
źródło
2

Późny komentarz, ale przejrzałem wszystkie wątki i nie mogłem go rozwiązać, dopóki nie zrobię tego. Wszystko, co musiałem zrobić, to dodać drugą kontrolę

if [[ $TERM == screen]]; then
    TERM=screen-256color
fi

oprócz pierwszej instrukcji warunkowej w moim .bashrcpliku:

if [[ $TERM == xterm ]]; then
    TERM=xterm-256color
fi

Miałem to również w .tmux.conf:

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

W moim .vimrcpliku:

set term=screen-256color
PQL
źródło