Фон Colorscheme не правильний у терміналі


13

Я імпортував соляризовану кольорову схему та палітру. Мій термінал має правильні кольори та фон, gvim має правильні кольори та фон, але vim має неправильно кольоровий фон. У тексті все правильно, але фон здається чисто чорним.

Це порівняння терміналів, 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.


1
Під "[m] y термінал має правильні кольори та фон", ви хочете сказати, що ви дотримувались конкретних порад щодо Vim у терміналі?
Андрій

2
Я дотримувався поради, @Andrew. Дякую, хоча.
Обердіар

@Oberdiear Порада, на яку посилається Ендрю, пояснює, що ви повинні налаштувати свій термінал для використання соляризованих кольорів, а не використовувати цю g:solarized_termcolors=256опцію. Якщо ви раді використовувати соляризовані кольори у своєму терміналі, цей спосіб працює набагато краще. Текст вашого питання буде означати , що ви вже створили свій термінальний використовувати соляризації кольору (хоча на скріншоті ви показуєте не дивиться на мене , як це робить), так що в цьому випадку, чому ви з допомогою g:solarized_termcolors=256параметра?
Багатий

Який термінал ви використовуєте? Цей сценарій у мене є gnome-terminal.
wchargin

@Rich, я думаю, що у мене палітра не налаштована правильно. Ви (чи хтось інший) знаєте, як правильно встановити це для Xfce Terminal?
Обердіар

Відповіді:


10

Є дві причини, чому я думаю, що це може статися:

  1. Соляризована кольорова гама, яку ви використовуєте, не декларує ctermfgі ctermbgжодну з функцій, які ви хочете виділити. Спробуйте цю кольорову схему , вона повинна виглядати по суті однаково як всередині вашого терміналу, так і в gvim, якщо це так, то вам може знадобитися розглянути кольорову схему, яка оголошує ctermfgі ctermbg.

  2. Можливо, вам потрібно буде переконатися, що ваш емулятор термінала підтримує кольори, які ви намагаєтеся відобразити:


Зауважте, що це може відбуватися одночасно, але важко діагностувати це без додаткової інформації про вашу систему.


Desert256 працює чудово, але я не шанувальник великої кількості. Я вважаю, що TERMзмінна невірна, але я не маю уявлення, як її змінити.
Обердіар

2
Я встановив ncurses-term. Потім я запустив команду. Після запуску його весь текст стає сірим, а фон чорним.
Обердіар

1
Це має бути export TERM=xterm+256color, НЕ "color s " (множина). Крім того, я вважаю, що так має бути xterm-256color, НЕ "** + ** 256 кольорів; але я можу помилятися конкретно щодо використання його з соляризованим. Відповідно до цієї відповіді ,# 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

Це ніби все виправляє. Кольори, здається, не такі яскраві в прикладах шрифту , але це міг би бути просто я. Для всіх, хто хоче використовувати соляризовану кольорову схему і використовує xfce4-terminal, просто зміна terminalrc і .vimrc, здавалося, вирішила мої основні проблеми. Дякуємо всім за допомогу!


1
Вам не знадобиться set t_Coрядок у вашому vimrc: Vim може прочитати це значення з терміналу (Налаштування, 't_Co'здається, трохи вантажний культ Vim: багато людей в Інтернеті рекомендують це робити, не розуміючи проблем, які вони намагаються вирішити. .)
Багатий

Я просто скажу "екран" і "tmux" - ці інструменти змінюють змінну $ TERM, щоб vim не міг прочитати потрібну їй інформацію.
NieDzejkob

@NieDzejkob Ви можете використовувати термінальний мультиплексор і все-таки мати правильно налаштований термінал.
Багатий

@Rich Ви не проти пояснити, що таке правильне виправлення на стороні терміналу? Я використовую 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

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

  1. 16-кольоровий режим: Соляризований містить лише 16 кольорів, тому в цьому режимі ви встановлюєте свій термінал для використання соляризованих кольорів як 16 кольорів, а схема кольорів Vim просто використовує їх. Так, наприклад, схема кольорів Vim запитає термінальний колір "1", а термінал відображає це як шістнадцятковий колір # dc322f.

  2. 256-кольоровий режим, де він вибирає найближчі відповіді для своїх 16 кольорів із 256-кольорової палітри.

Перший метод настійно рекомендується автором (і мною), і це звучить так, ніби ви із задоволенням використовуєте цей метод, оскільки ви заявляєте, що ваш "термінал має правильні кольори та фон".

Однак на екрані екрана видно, що у вашому терміналі встановлено не правильно кольори. (Білий колір не є кольором у соляризованому наборі, і хоча я його ще не зробив на екрані, інший колір тексту на екрані не здається мені схожим на соляризовану "фіолетову" (# 6c71c4).)

Якщо ви видалите налаштування ліній t_Coі g:solarized_termcolorsз вашого vimrc * і правильно налаштуєте свої термінальні кольори, то ви повинні виявити, що 16-ти кольорова соляризована кольорова схема почне працювати.

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


Я вірю, що ви повністю на правильному шляху. Я думаю, що я не встановив палітру правильно. Не могли б ви пройти мене через процес? Я ціную всю вашу допомогу, @ Rich.
Обердіар

1
Здається, ваше перше посилання зараз мертве.
akozi

@azoki Дякую, що повідомили мені. Схоже, сайт Solarized знаходиться на стадії (пере) будівництва. Я змінив посилання, щоб вказати на рето для github.
Багатий

3

Схоже, ви знайшли свою відповідь. У мене була ця сама проблема і нічого вище не працювало. Те , що спрацювало для мене з допомогою суперечка - хterminalrc , на відміну від sgerrand - х .

Моє релевантне vimrc:

syntax enable
set background=dark
colorscheme solarized

Сподіваюся, що хтось допомагає!


1

Отже, це працює для мене (на всіх терміналах, які я використовував - xterm, konsole, gnome-terminal, 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. Я впевнений, що у мене є проблема з палітрою, але я ще не маю цього з'ясувати.
Обердіар,

Який термінальний емулятор ви використовуєте? Якщо я правильно пригадую, вбудована соляризована конфігурація konsole не використовується повністю, і потрібно використовувати налаштування з оригінального соляризованого сховища…
Jubal

Я використовую Xfce Terminal.
Обердіар

Я думаю, що я працював так: спробуйте примусити TERM до xterm-256color, використовуючи при цьому соляризований пресет з переваг терміналу, а не з соляризованого сховища xfce-terminal git. Це разом із хаком BCE вище зробив трюк для xfce4-терміналу для мене.
Джубал

(Є ще щось рибне з базовою емуляцією терміналу та візуалізацією шрифту, і, мабуть, мені нагадали, чому я повернувся до звичайного старого xterm в Linux…)
Jubal

0

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

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

Можливо, варто також перевірити цей проект на GitHub .


Набір t_Co = 16 призводить до того, що кольори кардинально відрізняються від очікуваного. Я також використовую стандартний термінал Xubuntu - це Xfce-Terminal.
Обердіар

@Oberdiear Якщо налаштування t_Co = 16 впливає на кольори таким чином (із змінною g: solarized_termcolors unset), це означає, що кольори вашого терміналу не встановлені правильно для використання соляризованих. Як ви встановлюєте свої кольори терміналу?
Багатий

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 , вирішив проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.