Ś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.
xterm-256color
wersji (wyszukaj „38; 5;” w pliku), ale nie mogę w screen-256color
. Np. Gdziekolwiek jest \e[38;5;81m
in xterm-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 przypadku TERM=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 dopasowania xterm-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). thx
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
.