Vim w tmux wyświetla nieprawidłowe kolory


57

Zainstalowałem Ubuntu 11.10. Następnie pobrałem motyw Solarized dla Gnome Terminal. Z terminalu mój vim wygląda dobrze: wtyczka vim-powerline wyświetla się poprawnie, a składnia jest podświetlona odpowiednimi kolorami. Ale kiedy uruchamiam tmux i tam uruchamiam vim - podświetlanie składni używa tylko jednego podstawowego koloru, a vim-powerline nie wyświetla kolorów. Przejrzałem FAQ na temat vim-powerline i rozwiązaniem powinno być to w .tmux-config:

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

Ale to nie działa. Spojrzałem na TERM i jego zwrot „xterm”, więc spróbowałem:

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

Ale to też nie pomaga.

Jest to jedyny wiersz w .tmux.config. W .vimrc mam następujące linie:

call pathogen#infect()
set nocompatible
set encoding=utf-8
set laststatus=2
let g:Powerline_symbols = 'fancy'
set t_Co=256
syntax enable
set background=dark
colorsheme solarized

Nie mam pojęcia, dlaczego nie otrzymałeś pozytywnych opinii, nawet od tych, którzy musieli odnieść korzyść z otrzymania własnych opinii. +1 ode mnie Pytanie jest rozsądne i pomogło mi również rozwiązać mój problem, znajdując go.
0xC0000022L

Odpowiedzi:


54

Uruchamianie tmux z następującą flagą naprawia to dla mnie:

tmux -2

ze strony man tmux:

-2 Zmusza tmux do przyjęcia, że ​​terminal obsługuje 256 kolorów.


1
Dobra wskazówka. Kiedy wersja ekranu Cygwina zaczęła zawieszać się w vimie, bardzo szybko przełączyłem się ponownie na tmux. Kocham to.
grantbow

1
FYI - To była jedyna rzecz, która działała dla mnie z tmux 2.3 i najnowszą linią energetyczną. Kolory w pasku stanu vim i tmux były naprawdę dziwne.
Plasty Grove

28

Mam ten sam problem na Ubuntu 10.04 LTS przy użyciu Byobu 5.17 i tmux 1.5 przy użyciu najnowszej wersji Solarized z repozytorium GitHub.

Byłem w stanie częściowo to naprawić, określając $TERMw .bashrcpliku:

export TERM="xterm-256color"

Wydaje się również, że na starterze jest zgłoszony błąd, ale nie został on jeszcze rozwiązany: byobu nie wyświetla poprawnie dircolors


2
To jedyna rzecz, która działała dla mnie!
Tranquille,

Pracował także na Ubuntu 14.04 z tmux 2.0
dukedave

Jest to również rozwiązanie w systemie OS X haha
Jay

27

to zadziałało dla mnie

w .tmux.conf

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

w .vimrc

set term=screen-256color

usuń starą wartość terminu dla .vimrc, wierz mi, że to zadziała


1
Nie działa dla mnie tmux 1.8, vim 7.4.1816, ubuntu x86_64 z jądrem 3.13.0-92-generic. FYI.
fstang

1
Działa dla mnie bez ustawień .vimrc, tylko .tmux.conf.
Geison Santos,

Ustawienie .tmux.conf załatwiło sprawę!
hesselbom

4

Typ terminala powinien być ustawiony na screen-256color w ~ / .tmux.conf. Mówi tmux, co ustawić zmienną środowiska TERM, więc nie będzie działać w bieżącej sesji - uruchom nową i przetestuj.

Jeśli nadal nie działa, możesz uruchomić Vima używając:

TERM=screen-256color vi

To ustawia zmienną środowiskową tylko na jednorazowe wykonanie vi.

Jeśli to nie spowoduje, że vim wyświetli wszystkie kolory, sprawdź, czy twój terminal (nie jestem pewien, czy testujesz tylko z jednym emulatorem terminalu) jest skompilowany do obsługi palety 256 kolorów - pobierz i uruchom poniższy skrypt Perla z emulator terminalu, o którym mowa.

http://scie.nti.st/dist/256colors2.pl

PS. Zakładam, że już poprawiłeś literówkę, którą zauważyłeś.


2

Jak wyjaśnił Marcin Kamiński, jeśli TERM=screen-256color vim <filename> działa dla ciebie, po prostu dodaj następujące do swojego.bashrc

TERM=screen-256color

i następujące w .tmux.conf:

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

Miałem ten sam problem, to działa dla mnie.


To był jedyny, który działał dla mnie (tmux 1.8).
Yamaneko

Właściwie właśnie przetestowałem i TERM=screen-256colorwystarczyła mi tylko zmiana , niezależnie od ustawienia tmux na screen-256colorlub na xterm-256color. Dziękuję Ci!
Yamaneko

1

W ostatniej linii twojej literówki jest literówka .vimrc.

Powinno być colorscheme solarized

Nie jestem pewien, czy to pomaga :)


0

Być może masz ten sam problem udokumentowany w tej odpowiedzi.

Zasadniczo ustawienie .tmux.conf działa i TERMjest ustawione na screen-256color, ale następnie tmux otwiera bash i wywołuje twoje .bashrc, które ustawia TERMna coś innego (być może xterm-256color).

Rozwiązaniem jest ustawienie TERMw ustawieniach terminala zamiast w .bashrc. Jeśli nie jest to możliwe, możesz sprawdzić plik TERM.bashrc i nie zmieniać go, jeśli jest już dostępny screen-256color.



0

[Solucion] [1], który może zaburzyć widzenie i sprawić, że Vim będzie nieprzyjemny w użyciu przez dłuższy czas.

Możesz to naprawić, uruchamiając: set term = screen-256color w Vimie lub ponownie uruchamiając Vima w środowisku TERM = screen-256color, jak zalecają niektórzy eksperci: http://sunaku.github.io/vim-256color-bce.html


2
Co rozumiesz przez [Solucion] [1]? Czy próbowałeś odnieść się do innej odpowiedzi? Odpowiedzi nie zawsze pojawiają się w tej samej kolejności. Polecam rozwinięcie tego, aby wyjaśnić, co mówisz, może „zakłócić twoją wizję i sprawić, że Vim będzie nieprzyjemny w użyciu przez dłuższy czas”.
Eliah Kagan

0

W swoim .bashrc lub .zshrc po prostu dodaj

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

a także zacznij od tmux -2


0

Dla tych, którzy pochłaniają czas na kolory i jeśli solaryzowany vim nie działa na tmux, lub zmęczony szukaniem kolorów vim, powinno to działać za minutę, również pochodzi z oficjalnego repozytorium, jak następuje.

yum install vim-jellybeans

lub

mkdir -p ~/.vim/colors
cd ~/.vim/colors
curl -O https://raw.githubusercontent.com/nanotech/jellybeans.vim/master/colors/jellybeans.vim
touch ~/.vimrc 
sed -i '/colorscheme/d' ~/.vimrc
echo colorscheme jellybeans >> ~/.vimrc

to naprawi to dzięki pięknemu zestawowi kolorów, a wzory są tak skupione i przydatne, jeśli próbujesz również ustawić te wyróżnienia, wyszukiwane słowa, to jest to. wszystko już zostało użyte. Możesz nawet zmieniać kolory w pliku konfiguracyjnym.

Jeśli nie chcesz instalować niczego, a tylko proste szybkie rozwiązanie, zignoruj ​​powyższe i wypróbuj to w vimie

:colo ron możesz także zastąpić „ron” następującymi zestawami, a nawet przywrócić do solo default

blue 
darkblue 
default
delek
desert
elflord
evening
koehler
morning.vim
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner

i zapisz w .vimrc

colo ron
syntax on

Ktokolwiek dał negatywną opinię. pozwól mi usłyszeć prawidłowy powód.
Seandex
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.