терминал в Tmux 256цветный, но vim нет

Вопрос или проблема

Недавно я установил tmux на своём Ubuntu 16.04.

Экран терминала в tmux правильно отображает 256 цветов, однако когда я открыл vim внутри tmux, цвета отличались от тех, что отображались при запуске прямо в терминале.

Я попытался добавить

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

в мой файл .tmux.conf, но проблема все еще существует.

  • мой экран терминала в tmux: Экран терминала в tmux
  • vim запущенный прямо в терминале: vim запущенный прямо в терминале
  • vim запущенный внутри tmux: 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, тогда как внутри tmuxscreen-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 и всех связанных пакетов. Если после выполнения всех действий проблема всё ещё сохраняется, рассмотрите возможность поиска дополнительной информации в документации или на форумах технической поддержки.

Оцените материал
Добавить комментарий

Капча загружается...