Środowisko:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- Terminal GNOME 3.22.1 Korzystanie z wersji VTE 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (12 września 2016, opracowano 22 lutego 2017 16:26:11)
- tmux 2.2
Niedawno zacząłem używać tmux i zauważyłem, że kolory w Vimie zmieniają się w zależności od tego, czy działam w tmuxie, czy poza nim. Poniżej zrzuty ekranu Vima na zewnątrz (po lewej) i wewnątrz (po prawej) tmux podczas oglądania Git diff:
Moja TERM
zmienna to
- Poza tmux:
xterm-256color
- Wewnątrz tmux:
screen-256color
Vim zgłasza te typy terminali zgodnie z oczekiwaniami (via :set term?
):
- Poza tmux:
term=xterm-256color
- Wewnątrz tmux:
term=screen-256color
Vim informuje również, że oba wystąpienia działają w trybie 256-kolorowym (przez :set t_Co?
):
- Poza tmux:
t_Co=256
- Wewnątrz tmux:
t_Co=256
Istnieje wiele podobnych pytań dotyczących uruchamiania Vima w trybie 256 kolorów w tmux (najlepsza odpowiedź, jaką znalazłem, jest tutaj ), ale nie sądzę, że to mój problem, biorąc pod uwagę powyższe informacje.
Mogę zduplikować problem poza tmux, jeśli uruchomię Vima z typem terminala ustawionym na screen-256color
:
$ TERM=screen-256color vim
To sprawia, że wierzę, że istnieje tylko pewna różnica między możliwościami terminala xterm-256color
a screen-256color
terminalem, która powoduje różnicę w kolorze. Co prowadzi do pytania postawionego w tytule: co konkretnie w możliwościach terminali powoduje, że kolory Vima są różne? Widzę różnice między uruchomieniem :set termcap
w tmuxie i poza nim, ale jestem ciekawy, które zmienne faktycznie powodują różnicę w zachowaniu.
Niezależnie od poprzedniego pytania, czy możliwe jest, aby kolory Vima były spójne podczas uruchamiania w tmuxie lub poza nim? Niektóre rzeczy, które próbowałem obejmują:
- Jawne ustawienie domyślnego terminala, z którego korzysta tmux,
~/.tmux.conf
na różne wartości (niektóre wbrew poradom tmux FAQ ):
ustaw -g domyślny terminal „screen-256color” ustaw -g domyślny terminal „xterm-256color” ustaw -g default-terminal „screen.xterm-256color” ustaw -g domyślny terminal „tmux-256color”
- Uruchamianie tmux za pomocą
tmux -2
.
We wszystkich przypadkach Vim nadal wyświetlał różne kolory w tmuxie.
script
, uruchomićvim
, wyjść,vim
a następnie zamknąćscript
powłokę i dołączyć wynikowytypescript
plik? Następnie powtórz te same kroki zTERM=screen-256color vim
.xterm-256color
wersji (wyszukaj „38; 5;” w pliku), ale nie mogę wscreen-256color
. Np. Gdziekolwiek jest\e[38;5;81m
inxterm-256color
(kolor nr 81 z 256-kolorowej palety, środkowy niebieski odcień),screen-256color
zawiera\e[34m
zamiast tego (standardowy niebieski z 8-kolorowej palety). Tak więc główne pytanie brzmi: dlaczego vim nie używa 256-kolorowej palety w przypadkuTERM=screen-256color
.xterm-256color
wersja wydaje się drukować ekran dwukrotnie, najpierw przy użyciu starszych kolorów, a następnie z 256-paletową paletą kolorów. Wyszukaj np. „F1” w pliku, znajdziesz dwa dopasowaniaxterm-256color
, pierwszy z\e[34m
kolorem, drugi z\e[38;5;81m
. Nie wiem o co tu chodzi.set -g default-terminal "screen.xterm-256color"
w~/.tmux.conf
i przeładować config w tmux (<Cs>: source plik ~ / .tmux.conf) pracował dla mnie (wydanie podświetlenia). thxOdpowiedzi:
tmux
nie obsługuje funkcji terminfobce
(usuwanie koloru wstecz), któravim
sprawdza, czy zdecydować, czy użyć schematu „domyślny kolor”.Ta cecha
tmux
została wspomniana kilka razy -źródło
Miałem wcześniej podobny problem. Trudno było odczytać niebieskie komentarze w Vimie. W
.tmux.conf
ustawiam to:I w
.vimrc
:Teraz wygląda następująco i działa zarówno w Gnome Terminal, jak i Cygwin:
źródło
bg=dark
w moim vimrc to naprawiło.$TERM
zarówno wewnątrz jak i na zewnątrztmux
było"xterm-256color"
i jawnie ustawienie backgroun zrobił to dla mnie. Dziękuję Ci!stterm
w tym, żexfce4-terminal
wszystko wyglądało na wygodne (pojawiające się komentarzecyan
zamiastblue
których bardzo trudno jest odczytać na ciemnym tle). po tej zmianie wszystko działa dobrze. Pamiętaj jednak, aby dodaćunlet! skip_defaults_vim source $VIMRUNTIME/defaults.vim
do pliku vimrc, aby użyć podświetlania składni itp.Dzięki analizie @ egmont, jakie kolory generował Vim, kiedy
TERM=screen-256color
zainspirowałem się do zapoznania się ze schematem kolorów, którego używa Vim w dwóch scenariuszach.Vim informuje, że
default
w obu przypadkach używa schematu kolorów . Pomyślałem, że to dziwne, ponieważdefault
schemat kolorów w Fedorze 25 (/usr/share/vim/vim80/colors/default.vim
) nie pasuje do kolorów, które faktycznie widzę, kiedyTERM=xterm-256color
. Jeśli wyraźnie ustawię schemat kolorów za pomocą:colorscheme default
kiedyTERM=xterm-256color
, wygląd Vima zmieni się na taki, kiedyTERM=screen-256color
. Aby przywrócić kolory takim, jakie były, kiedy pierwszy raz uruchomiłem Vima, musiałem użyćron
schematu kolorów. Postęp!Znalazłem zapytać Ubuntu odpowiedź , która sugeruje, że kiedy Vim donosi, że jest za pomocą
default
kolorów, to nie musi oznaczać,default.vim
ale raczej jakiś motyw specyficzny schemat kolorów. Jak wskazuje odpowiedź, ciemny motyw (którego używam) odpowiadaron
schematowi kolorów, tak jak odkryłem powyżej. (Mimo że ten post dotyczy Ubuntu, zakładam, że OP używa GNOME).Znalazłem też inne pytanie, które wydaje się opisywać ten sam problem, który mam. Natknąłem się na to podczas wyszukiwania, zanim opublikowałem to pytanie, ale z jakiegoś powodu kolorystyka nie wydawała mi się istotna.
Skończyło się na tym, co @LapshinDmitry zrobił w swojej odpowiedzi i wyraźnie zapisał
colorscheme ron
w moim~/.vimrc
pliku. Teraz, niezależnie od tego, czy uruchomię Vima w tmuxie, czy poza nim, kolory wyglądają tak samo. Jedyną wadą jest to, że jeśli kiedykolwiek zmienię motyw pulpitu z ciemnego smaku na lekki, Vim nie przełączy się automatycznie na „domyślny” schemat kolorów jasnego motywu, co najwyraźniej jestpeachpuff
. Mogę z tym żyć, ponieważ prawdopodobnie nigdy nie zmienię tematu.Nie zamierzam zaakceptować tej odpowiedzi, ponieważ rozważam wyraźne ustawienie schematu kolorów w moim
~/.vimrc
obejściu zamiast rozwiązania. Jeśli ktoś może wyjaśnić, dlaczego Vim ładuje inny „domyślny” schemat kolorów w zależności od wartościTERM
, chętnie przyjmę tę odpowiedź, ponieważ bardziej interesuje mnie podstawowa przyczyna. Podejrzewam, że ma to coś wspólnego z tym, jak Vim interpretuje możliwości terminala między dwoma plikami terminfo.źródło
vim
zachowuje. W końcubce
możliwości nie powinny mieć nic wspólnego z dostępną liczbą kolorów.bce
możliwości terminala, 2) jeśli jest obecny, wybierz schemat kolorów „A”, 3) w przeciwnym razie wybierz schemat kolorów „B”. Wierzę, że głębia kolorów jest taka sama w obu przypadkach (tj. 256 kolorów, jakt_Co
pokazuje). Po prostu schemat kolorów „B” w moim systemie używa tylko 8-paletowej palety kolorów, mimo że możliwe jest 256 kolorów ( myślę , że to wyjaśnia to, co zaobserwowałeś podczas analizy maszynopisu; popraw mnie, jeśli się mylę). Pamiętaj, że po uruchomieniu:colorscheme ron
widzę 256-kolorowe sekwencje specjalne w tej samej sesji Vima.vim
ma naprawdę dziwne decyzje projektowe.To prawda i działa dla mnie. Wypróbuj go z innym terminalem (używam urxvt), aby sprawdzić, czy problem stanowi Gnome Terminal. W pobliżu
Sprawdź także
COLORTERM
(moja jest ustawiona narxvt
) iunset TERMCAP
.źródło
TERM
jestrxvt-unicode-256color
) przy użyciu odpowiednich~/.Xdefaults
i niestety nadal obserwowanych różnych kolorów wewnątrz i na zewnątrz tmux. W przypadku scenariusza terminalnego gnomeCOLORTERM
jesttruecolor
iTERMCAP
jest pusty zarówno w tmuxie, jak i poza nim. W przypadku scenariusza urxvtCOLORTERM
jest on narxvt-xpm
zewnątrz itruecolor
wewnątrz tmux, natomiastTERMCAP
jest pusty zarówno wewnątrz, jak i na zewnątrz tmux.:help xterm-true-color
lub spróbuj z bardziej domyślną konfiguracją Vima.termguicolors
w moim.vimrc
i:set termguicolors?
raportachnotermguicolors
w obu przypadkach. Przejrzę temat pomocy, do którego się odwoływałeś; dzięki!Dla własnego odniesienia później, gdy niewątpliwie google to konfigurowanie mojej następnej maszyny.
Skorzystaj z tych instrukcji, aby uzyskać niezbędne pliki binarne i biblioteki DLL do ŚCIEŻKI Git bash:
https://blog.pjsen.eu/?p=440
Użyj tych poleceń, aby skonfigurować:
źródło