Среда:
- 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;81min 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вместо.