Терминал сохраняет цвет bg после закрытия vim - с использованием цветовой схемы и шпаклевки - 256 цветов

После закрытия приложения, использующего форматирование цвета (например, vim), терминал сохраняет некоторые свойства, такие как цвет фона. Это происходит только при использовании термина putty-256color или screen. Я наблюдаю подобное поведение в RHEL 6.5 и Ubuntu 14.04LTS.

Единственное решение - это reset терминал.

При использовании термина xterm-256color (также с эмулятором терминала Putty) проблемы нет.

Есть ли решение/объяснение, почему это происходит, и что я могу потерять при использовании xterm в эмуляторе терминала Putty, то есть было бы предпочтительнее использовать putty-256color или xterm-256color term?

3
задан vobelic 07 июля '14 в 17:38
источник поделиться

3 ответов

В описании проблемы упоминается, что "терминал сохраняет некоторые свойства, такие как цвет фона". Это может относиться к функции стирания заднего фона, поддерживаемой PuTTY. Когда экран стирается, терминал заполняет фон (на стертой части) текущим цветом фона.

На первый взгляд альтернативная функция экрана, похоже, не связана. Я могу создать проблему с использованием PuTTY и vim, используя "утреннюю" цветовую схему с отключенной альтернативной экранной функцией PuTTY. При выходе экран имеет тот же серый фон, что и в vim. Если я следую этому,

  tput sgr0
Код>

то эта команда сбрасывает цвета, так что новый текст записывается с фоновым цветом фона по умолчанию (как ожидалось).

Глядя на escape-последовательности, отправленные vim на выходе, не показывает ничего необычного — в описании терминала (используя unmap, чтобы сделайте их в удобочитаемой форме):

<Предварительно > <код > \п \ E [1m \ Е [38; 5; 130mendif \ E [0м \ E [30m \ E [47m \ Е [24; 63H1,1 \ E [11CTop \ Е [1; 1H \ E [? 25h \ E [? 25l \ Е [24; 63H \ E [K \ Е [24; 1H: \ E [? 25hq \ E [? 25l \ Е [? 25h\г \ E [? 25l \ Е [24; 1H \ E [K \ Е [24; 1H \ E [? 1л \ Е > \ E [? 25h \ E [2J \ E [? 47L Код >

То есть vim отправляет sgr0 (\E [0m) сразу после установки фона в серый цвет (\E [38; 5; 130mкод>). Выполнение этого должно reset цвета. Но это не так. Есть еще несколько операций перед тем, как vim отправит двухчастную escape-последовательность в rmcup

<Предварительно > <код > \E [2J \ E [? 47L Код >

который должен очистить экран (альтернативный) и вернуться к нормальному экрану. Соответствующая возможность в xterm равна

<Предварительно > <код > \E [? 1049l Код >

который объединяет две операции. Увидев это, в PuTTY возникают две проблемы, которые вместе создают проблему:

  • цвета не сбрасываются, как ожидалось, и
  • цвет применяется для установки фона на экране normal.

Просто работает с TERM = xterm, используя код 1049, потому что разработчики PuTTY, по-видимому, тестировали , что. Например, если это восстанавливает цвета обычного экрана (но не используется код 47), тогда вы увидите именно эту проблему.

Дальнейшее чтение:

1
ответ дан Thomas Dickey 16 июня '16 в 23:49
источник поделиться

Решение этого - включить altscreen под экраном GNU. Таким образом, термин экрана ведет себя как обычный xterm - полноэкранное приложение имеет отдельный кадр/экран из остальной части вывода.

Важно, однако, иметь правильный набор TERM, чтобы приложение знало, как переключаться между обычным и альт-экраном.

Источник: При использовании vim или менее на экране gnu выключение vim или менее оставляет затяжной отпечаток

0
ответ дан vobelic 08 июля '14 в 12:03
источник поделиться

См. этот ответ для некоторого вдохновения о том, как исправить эту проблему:

Главное - включить

altscreen on

в файле .screenrc.

qaru.site/questions/434591/...

0
ответ дан bloodrootfc 16 июня '16 в 18:30
источник поделиться

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