Я пытался заставить подсветку синтаксиса (с 256 цветами) vim
работать внутри screen
, которая работает внутри gterm
.
Вначале все работает довольно хорошо.Под словом «в начале» я подразумеваю, что после того, как я начну screen
и введу vim
, цвета выглядят нормально, и действительно есть 256 цветов.
Но через некоторое время (я нене знаю точно, как долго) цвета автоматически возвращаются к виду, как будто есть только 8 (или 16?) цветов.
Например, после того, как это уже произошло, если я введу команду
hi Comment ctermfg=68
внутри vim
комментарии кажутся "чисто" зелеными;однако, если я открою другой vim
внешний экран (в том же терминале), то с помощью той же команды комментарии будут выглядеть как «желтоватый» зеленый.
Ниже приведены мои настройки .screenrc, связанные с цветом:
attrcolor b ".I"
defbce "on"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
term xterm-256color
После запуска сценария python для отображения всех цветов я обнаружил, что, возможно, это проблема самого экрана, и он не имеет ничего общего с vim.
Что яв сценарии screen
с проблемами этот сценарий выдает 256 цветов, но многие из них фактически одинаковы;однако, когда я запускаю новый сеанс экрана с той же конфигурацией, этот скрипт выдает 256 цветов, отличных друг от друга.
Редактировать:
Прошлой ночью я подключился к своему компьютеру Linux (которыйнаходится в моем офисе и он всегда включен) с putty
, затем открыл сеанс screen
с несколькими окнами в нем.Цвета верны прошлой ночью.Затем перед сном я отключил сеанс screen
и закрыл putty
.
Теперь утром, когда я снова присоединяю сеанс screen
к putty
, происходит сбой цветов: они выглядят какесли есть только 8 цветов.
Цвета хороши снаружи screen
(но все еще в putty
).
Редактировать:
Три года спустя после того, как я спросилНа этот вопрос сегодня я увидел похожую проблему.Проблема в том, что vim
может отображать 256 цветов за пределами screen
, а screen
может отображать 256 цветов с помощью тестового сценария, но vim
не может отображать любой цвет (может отображать только черный и белый) внутри screen
.Как примечание для себя, вот файл .screenrc
, который я использую
hardstatus alwayslastline "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %Y-%m-%d %c"
shell "bash"
startup_message off
vbell off
altscreen on
attrcolor b ".I"
defbce "on"
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
term screen-256color
Решение проблемы уже упомянуто в принятом ответе, а именно, мне нужно включить
export TERM=xterm-256color
в .bashrc
.