Среда:
- Fedora 25 (4.9.12-200.fc25.x86_64)
- GNOME Terminal 3.22.1 Использование VTE версии 0.46.1 + GNUTLS
- VIM - Vi IMproved 8.0 (2016 сентябрь 12, составлено 22 февраля 2017 года 16:26:11)
- tmux 2.2
Недавно я начал использовать tmux и заметил, что цвета в Vim меняются в зависимости от того, работаю я внутри или вне tmux. Ниже приведены скриншоты Vim снаружи (слева) и внутри (справа) tmux при просмотре Git diff:
Моя TERM
переменная
- Вне tmux:
xterm-256color
- Внутри Tmux:
screen-256color
Vim сообщает об этих типах терминалов, как и ожидалось (через :set term?
):
- Вне tmux:
term=xterm-256color
- Внутри Tmux:
term=screen-256color
Vim также сообщает, что оба экземпляра работают в 256-цветном режиме (через :set t_Co?
):
- Вне tmux:
t_Co=256
- Внутри Tmux:
t_Co=256
Есть много подобных вопросов относительно того, как заставить Vim работать в 256-цветном режиме внутри tmux (лучший ответ, который я нашел здесь ), но я не думаю, что это моя проблема, учитывая приведенную выше информацию.
Я могу продублировать проблему за пределами tmux, если я запускаю Vim с типом терминала, установленным в screen-256color
:
$ TERM=screen-256color vim
Так что это заставляет меня поверить, что есть просто некоторая разница между возможностями терминала xterm-256color
и screen-256color
терминалами, которая вызывает разницу в цвете Что приводит к вопросу, поставленному в заголовке: что конкретно в возможностях терминала вызывает различия в цветах Vim? Я вижу различия между работой :set termcap
внутри и снаружи tmux, но мне любопытно, какие переменные действительно вызывают разницу в поведении.
Независимо от предыдущего вопроса, возможно ли, чтобы цвета Vim были последовательными при работе внутри или снаружи tmux? Вот некоторые вещи, которые я пробовал:
- Явная установка терминала по умолчанию, который использует tmux,
~/.tmux.conf
на различные значения (некоторые вопреки рекомендациям FAQ по tmux ):
установить -g default-terminal "screen-256color" установить -g default-terminal "xterm-256color" установить -g default-terminal "screen.xterm-256color" установить -g default-terminal "tmux-256color"
- Начиная использовать Tmux
tmux -2
.
Во всех случаях Vim продолжал отображать разные цвета внутри tmux.
xterm-256color
версии (поиск «38; 5;» в файле), но не могу в screen-256color
. Например, везде, где есть \e[38;5;81m
in xterm-256color
(цвет № 81 из 256-цветовой палитры, средний синий оттенок), вместо него screen-256color
содержится \e[34m
(стандартный синий из 8-цветовой палитры). Поэтому главный вопрос - почему vim не использует 256-цветовую палитру в случае TERM=screen-256color
.
xterm-256color
версия, кажется, печатает экран дважды, сначала с устаревшими цветами, а затем с 256-цветовой палитрой. Ищите, например, «F1» в файле, вы найдете два совпадения xterm-256color
, первое с \e[34m
цветом, второе с \e[38;5;81m
. Я не знаю, что здесь происходит.
set -g default-terminal "screen.xterm-256color"
в ~/.tmux.conf
и перезагрузить конфигурации в tmux (<Cs>: источник-файл ~ / .tmux.conf) работал для меня (вопрос выделения). thx
script
, запуститьvim
, выйти,vim
а затем выйти изscript
оболочки и прикрепить полученныйtypescript
файл? Затем повторите те же шаги сTERM=screen-256color vim
вместо.