tmux, Solarized и terminfo

Это очень специфическая проблема, но, на основании того, что я видел в Интернете, удивительно распространенная. Я использую довольно старую версию Scientific Linux 5, основанную на Red Hat. Я использую vim с цветовой схемой Solarized vim, а мой TERM переменная окружения обычно устанавливается в xterm-256color, Это работало нормально, пока я не начал использовать tmux. На непустых строках в vim цветовая схема распространялась только на конец символов документа, оставшиеся пробелы были на заднем фоне.

Чтобы исправить это в онлайн-руководствах, нужно установить TERM='screen-256color', Однако после этого я получил бы зловещее предупреждение: WARNING: terminal is not fully functional - (press RETURN)при попытке сделать безобидные вещи, такие как чтение страниц руководства. Тем не менее, все, казалось, работало нормально, и ошибка Solarize была исправлена.

Я нашел исправление - использование TERM='xterm-256color' по умолчанию и добавив эту строку в мой.bashrc:

alias v='function _vim(){ TERM='screen-256color'; vim $1; TERM='xterm-256color'; };_vim'

но это похоже на взлом. Анекдотично, я также установил alias tmux='tmux -2', что является общим предложением с вопросами, связанными с цветовой схемой.

Я также знаю, что terminfo screen-256color доступно на моей машине.

Так что, действительно, главное, что сбивает с толку то, что при использовании TERM='screen-256color'Я получаю эти предупреждения о полной функциональности, когда кажется, что все в порядке.

У меня нет root-доступа, поэтому в идеале любые исправления не нужны.

РЕДАКТИРОВАТЬ: я должен упомянуть, что TERM='screen-256color-bce' дал те же проблемы, что и TERM='screen-256color',

1 ответ

Среда пользователя не указана, но, вероятно, используется bash и менее (Scientific Linux 5 не имеет more).

Список пакетов на ftp-сайте Scientific Linux 5 показывает файл ncurses-5.5-24.20060715.src.rpm, который не включает screen-256color (он был добавлен в ncurses в октябре 2006 года). Эта система может иметь более позднюю терминальную базу данных после некоторого изменения после установки.

Приложение, использующее termcap, не увидит это описание терминала. Bash и менее программы Scientific Linux могли бы использовать termcap, а не terminfo. Быстрая проверка журнала изменений для bash-3.2-21.el5 говорит

* Fri Feb  1 2008 Miroslav Lichvar <mlichvar@redhat.com> - 3.2-21
- Link with libtermcap

В некоторых системах пропущенная запись termcap вызовет предупреждение. Но в Scientific Linux 5 данное предупреждение приходит от less, который проверяет описание своего терминала (используя интерфейс termcap), чтобы убедиться, что он может очистить оставшуюся часть текущей строки, оставшуюся часть экрана и весь экран.

В Scientific Linux 5 less Пакет построен с ncurses. Проблема с less с помощью TERM=screen-256color будет одна из этих возможностей

  • запись screen-256color на самом деле не установлена, или
  • Существует некоторая проблема с интерфейсом termcap, предоставляемым ncurses.

Пока были исправления производительности для screen Примерно в это же время программа кажется более вероятной, как видно из этого обсуждения плохо написанной screen-256color в начале 2006: Re: screen-256color вход в terminfo?, Из того, что я прочитал, я узнал, что там было плохо написанное описание терминала (не являющееся частью ncurses), которое породило проблему. К тому времени, когда он был предложен для включения в ncurses ( октябрь 2006 г.), проблема была устранена. В любом случае, это было бы исправлено в этот момент.

Другие вопросы по тегам