Вопрос или проблема
Недавно я установил tmux на своём Ubuntu 16.04.
Экран терминала в tmux
правильно отображает 256 цветов, однако когда я открыл vim
внутри tmux
, цвета отличались от тех, что отображались при запуске прямо в терминале.
Я попытался добавить
set -g default-terminal "screen-256color"
в мой файл .tmux.conf
, но проблема все еще существует.
- мой экран терминала в
tmux
: vim
запущенный прямо в терминале:vim
запущенный внутриtmux
:
Вывод команды
echo $TERM; tput colors; tput longname
- вне tmux:
xterm-256color 256 xterm
- с 256 цветами внутри tmux:
screen-256color 256 GUN Screen с 256 цветами
Попробуйте:
tmux -2
Из страницы руководства:
-2 Принудительно заставляет tmux принимать, что терминал поддерживает 256 цветов.
У вас также может быть проблема с вашей записью terminfo для screen-256color
.
Также попробуйте:
alias tmux='TERM=xterm-256color tmux -2'
Ответ или решение
Проблема, с которой вы столкнулись, заключается в неправильной обработке цветового представления в vim
, когда он запущен в tmux
. Давайте подробно рассмотрим все аспекты данной ситуации, чтобы помочь вам разобраться с этой проблемой.
1. ### Понимание окружения терминала
При стандартном запуске vim
в терминале, ваша переменная окружения TERM
определяет, как программа взаимодействует с терминалом. Ваша информация показывает, что в обычном терминале у вас установлено значение xterm-256color
, тогда как внутри tmux
– screen-256color
. Эти значения указывают на то, что реализация цветовой схемы различается в каждом из окружений.
2. ### Конфигурация tmux
Вы правильно добавили строку:
set -g default-terminal "screen-256color"
в файл .tmux.conf
. Однако, в вашем случае это никак не повлияло на вывод цветов в vim
, поскольку screen-256color
всё ещё не поддерживает полную функциональность, обеспечиваемую xterm-256color
. tmux
может правильно передавать 256 цветов, но для этого необходимо также убедиться, что окружение настроено правильно.
3. ### Первоначальная настройка tmux
Для того чтобы tmux
знал, что ваш терминал поддерживает 256 цветов, вы можете использовать команду:
tmux -2
Эта команда принудительно укажет tmux
, что терминал поддерживает 256 цветов и, таким образом, настройка должна работать корректно. Однако, это решает проблему временно для текущей сессии, и вам всё равно следует убедиться, что эта настройка будет применяться автоматически.
4. ### Устранение проблем с terminfo
Ваша проблема может быть связана также с ошибкой в реализации terminfo для screen-256color
. Вы можете попытаться проверить, существует ли правильная библиотека terminfo и она ли используется. Используйте следующую команду:
infocmp screen-256color
Это покажет, какие возможности у вашей текущей установки для screen-256color
. Если информации недостаточно, попробуйте обновить базу данных терминалов следующей командой:
sudo apt-get install ncurses-term
5. ### Установка переменной окружения
Попробуйте также добавить следующий алиас в ваш .bashrc
или .zshrc
, чтобы убедиться, что tmux
всегда запускается с корректной настройкой:
alias tmux='TERM=xterm-256color tmux -2'
Это будет гарантировать, что каждый раз, когда вы запускаете tmux
, он будет использовать xterm-256color
, что должно помочь вам в работе с vim
.
6. ### Проверка конфигурации vim
Также возможно, что сам vim
настроен неправильно для работы с tmux
. Откройте файл .vimrc
и добавьте следующую строку, чтобы указать vim
, что вы хотите использовать 256 цветов:
set t_Co=256
Заключение
Пройдясь по всем вышеописанным шагам, вы сможете устранить проблему с цветами в vim
, работающим под tmux
. Убедитесь также, что у вас установлены актуальные версии tmux
, vim
и всех связанных пакетов. Если после выполнения всех действий проблема всё ещё сохраняется, рассмотрите возможность поиска дополнительной информации в документации или на форумах технической поддержки.