Неправильно задан фон цветовой схемы в терминале

13

Я импортировал соляризованную цветовую схему и палитру. У моего терминала правильные цвета и фон, у gvim правильные цвета и фон, но у vim неправильно окрашенный фон. Текст полностью правильный, но фон выглядит чисто черным.

Это сравнение Terminal, GVim и Vim

Вот мой .vimrc:

syntax enable

if has('gui_running')
    set background=dark
else
    set background=dark
endif

:set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

Если у кого-то есть какие-либо предложения о том, что может быть причиной этого, я был бы очень признателен. Я запускаю xubuntu с терминалом по умолчанию.

Я должен также упомянуть, что светлая опция приводит к очень желтому фону для Vim.

Oberdiear
источник
1
«Терминал [m] y имеет правильные цвета и фон», вы хотите сказать, что следовали конкретному совету относительно Vim в терминале?
Андрей
2
Я следовал совету, @Andrew. Однако, спасибо.
Oberdiear
@Oberdiear Совет, на который ссылается Эндрю, объясняет, что вы должны настроить свой терминал на использование соляризованных цветов, а не использовать эту g:solarized_termcolors=256опцию. Если вы счастливы использовать соляризованные цвета в своем терминале, этот метод работает намного лучше. Текст вашего вопроса означает , что вы уже создали свой терминальный использовать соляризации цвета (хотя на скриншоте вы показываете не смотрит на меня , как это делает), так что в этом случае, почему вы с помощью g:solarized_termcolors=256параметра?
Богатый
Какой терминал вы используете? У меня есть этот скрипт для gnome-terminal.
wchargin
@Rich, я думаю, что у меня не правильно настроена палитра. Знаете ли вы (или кто-то еще), как правильно настроить это для Xfce Terminal?
Oberdiear

Ответы:

10

Я думаю, что это может произойти по двум причинам:

  1. Соляризованная цветовая схема, которую вы используете, не декларируется ctermfgи ctermbgни для одной из функций, которые вы хотите выделить. Попробуйте эту цветовую схему , она должна выглядеть одинаково как внутри вашего терминала, так и в gvim. Если это так, то вам может понадобиться использовать цветовую схему, которая объявляет ctermfgи ctermbg.

  2. Возможно, вам нужно убедиться, что ваш эмулятор терминала поддерживает цвета, которые вы пытаетесь отобразить:


Обратите внимание, что обе эти вещи могут происходить одновременно, но это трудно диагностировать без дополнительной информации о вашей системе.

El Developer
источник
Пустыня 256 работает отлично, но я не большой поклонник. Я верю, что TERMпеременная неверна, но я не знаю, как ее изменить.
Oberdiear
2
Я установил ncurses-term. Я тогда управлял командой. После запуска весь текст становится серым, а фон - черным.
Oberdiear
1
Должно быть export TERM=xterm+256color, а не «цвет с » (множественное число). Кроме того, я считаю, что это должно быть xterm-256color, НЕ "** + ** 256color; но я могу ошибаться, особенно если использовать его с соляризацией. Согласно этому ответу ,# Entries with embedded plus signs are designed to be included through use/tc capabilities, not used as standalone entries.
Эдвард
export TERM=xterm+256colorна OSX я получаюzle-line-finish:echoti:1: no such terminfo capability: rmkx
Xeoncross
У меня была именно эта проблема, и я export TERM=xterm+256colorsпомог vim solarized обнаружить и использовать точный цвет фона, как у моего терминала.
Шьям Хабаракада
5

Хорошие новости, все. @Tom и @Rich поставили меня на правильный путь. Я нашел решение, представленное здесь . Я установил свой .vimrc на простой

syntax enable
set background=dark
set t_Co=16
colorscheme solarized

Это, кажется, исправить все. Цвета не кажутся такими яркими в примерах шрифтов , но это вполне может быть только я. Любому, кто хочет использовать цветовую схему Solarized и использует xfce4-терминал, просто изменение терминала rc и .vimrc, казалось, решили мои основные проблемы. Спасибо всем за вашу помощь!

Oberdiear
источник
1
Вам не нужна set t_Coстрока в вашем vimrc: Vim может читать это значение из терминала (Настройка 't_Co'кажется чем-то вроде культового груза Vim: многие люди в Интернете рекомендуют делать это, не понимая проблем, которые пытаются решить) .)
Рич
Я просто скажу «screen» и «tmux» - эти инструменты изменяют переменную $ TERM, поэтому vim не может прочитать необходимую информацию.
NieDzejkob
@NieDzejkob Вы можете использовать мультиплексор терминала и при этом иметь правильно настроенный терминал.
Богатый
@ Рич, ты не против объяснить, что такое правильное исправление на стороне терминала? Я использую tmux с, $TERM=screenи настройка t_Co=16действительно исправляет визуальные проблемы для меня, но я хотел бы знать, каковы отношения, в первую очередь.
неопытный
@ffledgling Я бы с удовольствием. Возможно, потребуется немного взад-вперед, так что присоединяйтесь ко мне в чате .
Богатый
4

Я думаю, что это проблема совместимости этого colorschemeс терминалом. Плагин csaproxчудесным образом решает кучу этих проблем.

Сводка:

Трудно найти схемы цветов для терминала Vim. Большинство цветовых схем написаны только для поддержки GVim и вообще не работают в терминале Vim.

Этот плагин позволяет использовать только цветовую схему GVim Just Work в терминале Vim, при условии, что терминал поддерживает 88 или 256 цветов - и большинство делает это в наши дни. Обычно это не требует взаимодействия с пользователем (но посмотрите, что делать, если что-то не работает). После того, как этот плагин будет успешно установлен, каждый раз, когда вы :colorschemeего используете, он будет творить чудеса и заставит цветовую схему Just Work.

Ссылки на плагин:

Джонатас Эдуардо
источник
1
Это полезный плагин, но здесь он не поможет, поскольку соляризованная схема цветов уже прилагает значительные усилия для работы в терминале Vim как с 16-цветными, так и с 256-цветными терминалами.
Богатый
4

Соляризованная цветовая схема Terminal-Vim может работать одним из двух способов.

  1. 16-цветный режим: Solarized содержит только 16 цветов, поэтому в этом режиме вы настраиваете свой терминал на использование соляризованных цветов в качестве 16 цветов, а схема цветов Vim просто использует их. Так, например, схема цветов Vim будет запрашивать цвет терминала «1», и терминал отображает его как шестнадцатеричный цвет # dc322f.

  2. 256-цветный режим, в котором он выбирает наиболее близкие совпадения для 16 цветов из 256-цветовой палитры.

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

Однако из вашего скриншота видно, что ваш терминал не установлены правильные цвета. (Белый не является цветом в соляризованном наборе, и хотя я не усматривал его в глазу, другой цвет текста на скриншоте не выглядит мне так, как будто это Соляризованный "Фиолетовый" (# 6c71c4).)

Если вы удалите настройки линий t_Coи g:solarized_termcolorsиз вашего vimrc * и правильно настроите цвета терминала, то вы обнаружите, что 16-цветная соляризованная схема цветов начнет работать.

* Эти линии переключаются с использованием солнечного режима (менее точного) на 256 цветов. Это также должно работать (я подозреваю, что @Jubal правильно предположил, что здесь проблема с BCE ), но предпочтительнее использовать 16-цветный режим, если вы явно не хотите использовать соляризацию в своем терминале.

Богатый
источник
Я верю, что вы на правильном пути. Я думаю, что у меня не правильно установлена ​​палитра. Не могли бы вы провести меня через процесс? Я ценю вашу помощь, @Rich.
Oberdiear
1
Похоже, ваша первая ссылка сейчас мертва.
Акози
@azoki Спасибо, что дали мне знать. Похоже, сайт Solarized находится в стадии (пере) строительства. Я изменил ссылку, чтобы указать на репозиторий Github в настоящее время.
Богатый
3

Похоже, вы нашли свой ответ. У меня была такая же проблема и выше ничего не получалось. То, что работало для меня, использовало ссорыterminalrc , а не сгерран .

Мое отношение vimrcпросто:

syntax enable
set background=dark
colorscheme solarized

Надеюсь, что это помогает кому-то!

ohsonice
источник
1

Вот что у меня работает (на всех терминалах, которые я использовал - xterm, konsole, gnome-терминал, iterm2, roxterm - как в Linux, так и в OS X, также с gvim и macvim):

" no other configuration than this needed for solarized
colorscheme solarized
highlight SpecialKey ctermfg=11 ctermbg=8

if &term =~ '256color'
  " Disable Background Color Erase (BCE) so that color schemes work
  " properly within 256-color terminals
  set t_ut=
endif
Джубал
источник
Это вызвало аналогичную проблему с установкой t_Co = 16. Я вполне уверен, что у меня есть проблема с палитрой, но я еще не решил ее.
Oberdiear
Какой эмулятор терминала вы используете? Если я правильно помню, Konsole встроенного в соляризации конфигурации не используется полностью и нужно использовать настройки , из исходной соляризации хранилища ...
Джубал
Я использую Xfce Terminal.
Oberdiear
Я думаю, у меня получилось: попробуйте заставить TERM использовать xterm-256color, используя соляризованный пресет из настроек терминала, а не из соляризованного git-репозитория xfce-Terminal. Это вместе с взломом BCE выше помогло мне с xfce4-терминал.
Джубал
(В эмуляции терминала и рендеринге шрифтов все еще есть что-то подозрительное , и мне кажется, мне напомнили, почему я вернулся к простому старому xterm в Linux…)
Джубал,
0

Трудно было работать (я использую терминал Vim в Linux Mint), и, к сожалению, я не записывал подробности всего, что я делал. Вот соответствующий раздел моего vimrc:

syntax enable
set background=dark
set t_Co=16
colo solarized

Также стоит проверить этот проект на GitHub .

Том
источник
set t_Co = 16 приводит к тому, что цвета радикально отличаются от ожидаемых. Я также использую терминал Xubuntu по умолчанию - Xfce-Terminal.
Oberdiear
@Oberdiear Если настройка t_Co = 16 влияет на цвета таким образом (с неустановленной переменной g: solarized_termcolors), это означает, что цвета вашего терминала не настроены правильно для использования соляризации. Как вы устанавливаете цвета терминала?
Богатый
0

Что сработало для меня, так это удалить эту часть ваших настроек

if has('gui_running')
   set background=dark
else
   set background=dark
endif

Я использую xfce4-терминал

Найзенненмондай
источник
0

У меня тоже была эта проблема xfce-terminal.

После небольшого исследования я обнаружил эту ошибку : все, что вы устанавливаете $TERMв терминале XFCE, игнорируется.

Я думаю, что это действительно ошибка базовой (и не поддерживаемой) старой библиотеки VTE, которую использует терминал XFCE (все еще основанный на GTK + 2). Переход на терминал GTK + 3, который косвенно использует новую библиотеку VTE , решил проблему.

NTD
источник