Почему цвета Vim выглядят по-разному внутри и снаружи tmux?

Существует более новая версия mtp-tools, доступная в бэкпортах, так что вы можете попробовать, если это решит проблему.

49
23.05.2017, 15:40
5 ответов

tmux не поддерживает возможность terminfo bce (back color erase), которую vim проверяет, чтобы решить, использовать ли свою схему "цвета по умолчанию".

Эта особенность tmux упоминалась несколько раз -

26
20.08.2021, 11:44

Для справки позже, когда я, несомненно, погуглю эту настройку моей следующей машины.

  • Вим8 / Неовим
  • Windows 10
  • Гит Баш
  • Tmux 2.7

Используйте эти инструкции, чтобы добавить необходимые двоичные файлы и библиотеки DLL в PATH Git bash:

https://blog.pjsen.eu/?p=440

Используйте эти команды для настройки:

echo 'set -g default-terminal "screen.xterm-256color"' > ~/.tmux.conf
tmux -2u
0
27.01.2020, 19:38

Моя переменная TERM: Вне tmux: xterm-256color Внутри tmux: screen-256color

Это правильно и у меня работает. Попробуйте использовать другой терминал (я использую urxvt), чтобы узнать, не является ли проблема с терминалом Gnome.

Также проверьте COLORTERM (у меня установлено значение rxvt ) и отключили TERMCAP .

0
20.08.2021, 11:44

Благодаря анализу @egmont того, какие цвета выводил Vim, когда TERM=screen-256color, я был вдохновлен посмотреть на цветовую схему, которую Vim использует в двух сценариях.

Vim сообщает, что использует цветовую схему по умолчанию в обоих случаях. Я подумал, что это странно, потому что цветовая схема по умолчанию на Fedora 25 (/usr/share/vim/vim80/colors/default.vim) не соответствует цветам, которые я вижу, когда TERM=xterm-256color. Если я явно задаю цветовую схему с помощью :colorscheme default, когда TERM=xterm-256color, внешний вид Vim меняется на тот, который я вижу, когда TERM=screen-256color. Чтобы вернуть цвета к тем, что были при первом запуске Vim, мне пришлось использовать цветовую схему ron. Прогресс!

Я нашел ответ Ask Ubuntu answer, в котором говорится, что когда Vim сообщает, что использует цветовую схему default, это не обязательно означает default.vim, а скорее какую-то специфическую цветовую схему. Как указано в ответе, темная тема (которую я использую) соответствует цветовой схеме ron, как я и обнаружил выше. (Хотя это сообщение относится к Ubuntu, я предполагаю, что ОП использовал GNOME.)

Я также нашел другой вопрос, который, похоже, описывает ту же проблему, что и у меня. Я наткнулся на него во время поиска, прежде чем опубликовать этот вопрос, но по какой-то причине цветовая схема не показалась мне подходящей.

В итоге я поступил так, как @LapshinDmitry в своем ответе, и явно установил colorscheme ron в моем ~/.vimrc файле. Теперь, запускаю ли я Vim внутри или вне tmux, цвета отображаются одинаково. Единственный недостаток - если я когда-нибудь сменю тему рабочего стола с темной на светлую, Vim не будет автоматически переключаться на цветовую схему "по умолчанию" светлой темы, которая, по-видимому, peachpuff. Я могу с этим смириться, так как вряд ли я когда-либо буду менять свою тему.

Я не приму этот ответ, потому что считаю явную установку цветовой схемы в моем ~/.vimrc скорее обходным путем, чем решением. Если кто-то может объяснить, почему Vim загружает другую цветовую схему "по умолчанию" в зависимости от значения параметра TERM, я с радостью приму этот ответ, поскольку мне интереснее понять первопричину. Я подозреваю, что это как-то связано с тем, как Vim интерпретирует возможности терминала между двумя файлами terminfo.

5
20.08.2021, 11:44

У меня уже была похожая проблема. Комментарии, выделенные синим цветом в Vim, было трудно читать. В .tmux.conf я установил это:

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

А в .vimrc:

set background=dark

Теперь это выглядит следующим образом и работает как в Gnome Terminal, так и в Cygwin: enter image description here

38
20.08.2021, 11:44

Теги

Похожие вопросы