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 г.), проблема была устранена. В любом случае, это было бы исправлено в этот момент.