Неправильні кольори з vim у iTerm2 за допомогою Solarized


84

У мене дивна проблема з iTerm2, у терміналі vim (без графічного інтерфейсу) та соляризованою колірною схемою. По-перше, я встановив iTerm2 використовувати темну соляризовану колірну схему.

Я також використовую соляризоване для vim. У моєму .vimrc є такі рядки

set background=dark
colorscheme solarized

У терміналі кольорова схема виглядає неправильно: консоль вим

Для довідки ось як це виглядає під MacVim (gui vim) гуі вим

Що мені потрібно змінити в iTerm або моєму .vimrc, щоб кольори правильно виглядали у моїй консолі vim?

Відповіді:


118

Кілька речей, які потрібно перевірити:

  1. У iTerm2, у Налаштуваннях -> Профілі -> Термінал, у розділі «Емуляція терміналу» для параметра «Тип терміналу звіту» встановлено значення xterm-256color.

  2. У вашому .vimrc є кілька параметрів, які ви також можете встановити, щоб переконатися, що він використовує 256 кольорів:

    set background=dark
    " solarized options 
    let g:solarized_visibility = "high"
    let g:solarized_contrast = "high"
    colorscheme solarized
    
    І одна з них повинна працювати, але спочатку №1.

АЛЕ, якщо ви використовуєте за замовчуванням вбудований vim на Snow Leopard, він не буде працювати, оскільки він не побудований з підтримкою 256 кольорів. Я вважаю, що вбудована версія в Lion робить це.

Редагувати: На основі кількох коментарів до цієї відповіді я видалив let g:solarized_termcolors = 256рядок із .vimrcнаведеного вище прикладу. Здається, це може бути проблемою для деяких. Інший каже, що додавання рядка let g:solarized_termcolors = 16вирішило проблему кольорового дисплея. Ваш пробіг може відрізнятися.

Друге редагування: якщо ви завантажили соляризовану палітру кольорів у iTerm2, то обов’язково let g:solarized_termcolors=16. Тільки let g:solarized_termcolors=256якщо ви не використовуєте соляризовану палітру в якості попередньо встановленого кольору iTerm2.


13
Власне, "let g: solarized_termcolors = 256" було причиною неправильного відображення соляризованого для мене. Відповідно до git-репо ( github.com/vim-scripts/Solarized ), "ВАЖЛИВА ПРИМІТКА ДЛЯ КЕРМІНАЛЬНИХ КОРИСТУВАЧІВ:", ви повинні "дозволити g: solarized_termcolors = 16".
Сай Першард,

3
Якщо ви використовуєте соляризовану колірну схему з вашим терміналом, 16 кольорів ANSI будуть встановлені на соляризовані кольори, і в цьому випадку ви хочете встановити let g:solarized_termcolors=16. Якщо ви використовуєте 256, це буде близько, але фон буде сірим, а не темно-синім.
Паркер Селберт,

2
Здається, це 256дає мені сірий фон замість темно-синього на Lion, але 16виглядає точно так само, як опускання цієї змінної з мого vimrc. Ну добре, темно-сірий краще, ніж справді світло-сірий, який я отримував раніше.
styfle

1
До відповіді слід додати коментар @SaiPerchard. Для мене саме це виправило неправильний колір фону.
Marten Sytema

1
У мене не вийшло : stackoverflow.com/a/12969298/1945990 все ж таки зробив. ITerm, соляризована тема плюс vim соляризована тема.
Mike W

91

Наведені вище відповіді для мене не спрацювали.

Я використовую iTerm2 з vim 7.3 в OS X 10.7.4.

Якщо вищезазначені рішення не працювали і для вас, спробуйте це

syntax on
set background=dark
let g:solarized_termtrans = 1
colorscheme solarized

Оновлення: За словами Джима Стюарта, це працює і на Кітті .


Те саме для мене тут ... Дякую за це рішення!
фрітас

2
Я використовую KiTTY (похідне PuTTY) в Windows 7 і let g:solarized_termtrans = 1виправив для мене проблему, коли колір тла на порожніх рядках був сірим, але колір тла на рядках з текстом був чорним після вмісту.
Jim Stewart

вони не чорні глупці :(
Сетерон

Якщо ви використовуєте будь-яку іншу кольорову схему, можете hi Normal ctermbg=NONE, оскільки це, по суті, те, що termtransробить соляризоване (наскільки я можу зрозуміти з їх джерела)
Ахал Дейв

1
Це найближче до роботи, воно правильно встановлює колір тла, але моя курсорна лінія, колонка та стовпець номера рядка мають чорний фон. Чому ніколи ніколи не буває просто!
Ian Vaughan

13

https://github.com/altercation/solarized/tree/master/iterm2-colors-solarized

Завантажте пакет Solarized ( https://github.com/altercation/solarized ) і дотримуйтесь інструкцій:

Відкрийте iTerm 2, відкрийте Налаштування, натисніть на піктограму «Профілі» (раніше Адреси, раніше Закладки) на панелі інструментів налаштувань, а потім виберіть вкладку «кольори». Клацніть на "завантажити пресети" та виберіть "імпортувати ...". Виберіть файл теми Solarized Light або Dark.

Тепер ви завантажили попередньо встановлені кольорові налаштування Solarized у iTerm 2, але ще не застосували їх. Щоб застосувати їх, просто виберіть існуючий профіль у вікні списку профілів ліворуч або створіть новий профіль. Потім виберіть попередньо встановлене значення Solarized Dark або Solarized Light зі спадного меню "Load Presets".

======================================

Або:

cd ~/.vim/bundle
git clone git://github.com/altercation/vim-colors-solarized.git

Змінити .vimrc

Темна тема:

syntax enable
set background=dark
colorscheme solarized

Світло

syntax enable
set background=light
colorscheme solarized

2
Жодна з попередніх відповідей не вирішує моєї проблеми, але ця вирішує. Виявляється, мені не вистачало кольорових пресетів.
Софія Фенг

10

Це працювало для мене в OS X 10.9.1 в iTerm 2, а також у Терміналі. Однією помилкою, яку я зробив, було розміщення декларації кольорової схеми перед настройками termtrans і termcolors (і мені потрібні були обидві, щоб це працювало). Як вже говорили інші, я встановив тип терміналу xterm-256color

if !has("gui_running")
    let g:solarized_termtrans=1
    let g:solarized_termcolors=256
endif

colorscheme solarized
set background=dark

7

Я зіткнувся з тією ж проблемою на OSX 10.11.6, iTerm2 Build 3.0.12.

Ось моє виправлення.

  1. .vimrc

    синтаксис увімкнути встановити фон = соляризована схема темних кольорів

  2. Встановіть для типу терміналу звіту значення xterm-256color.

введіть тут опис зображення

  1. Встановіть для попередньо заданого кольору у профілі значення Solarized Dark

введіть тут опис зображення


Проголосуйте, тому що це був ключ, який мені потрібен, щоб спробувати різні попередньо встановлені кольори, які приведуть мене до відкриття того, що кольори екіпажів після 256 трактуються по-різному в mac проти linux. На mac кольори, що минули 256, здавалися модифікованими, ніж згладжені до одного з 8 вибраних кольорів ANSI, тоді як в Linux, здається, виконують модуль, який обертається навколо та вибирає колір.
Ерік Лещинський

6

Від творця: http://ethanschoonover.com/solarized/vim-colors-solarized

ВАЖЛИВА ПРИМІТКА ДЛЯ КЕРІВНИХ КОРИСТУВАЧІВ:

Якщо ви збираєтеся використовувати Solarized у режимі терміналу (тобто не у графічній версії інтерфейсу, як gvim або macvim), будь ласка, будь ласка, розгляньте можливість встановити кольорову схему вашого емулятора терміналу як використану палітру Solarized. Я включив палітри для деяких популярних емуляторів терміналів, а також Xdefaults в офіційне завантаження Solarized, доступне на домашній сторінці Solarized. Якщо ви використовуєте Solarized без цих кольорів, вам потрібно буде сказати Solarized знизити кольорову схему до набору, сумісного з обмеженою 256 палітрою терміналів (тоді як, використовуючи 16 значень кольору ansi терміналу, ви можете встановити правильні, конкретні значення для Solarized палітра).

Якщо ви використовуєте власні кольори терміналів, solarized.vim повинен працювати нестандартно для вас. Якщо ви використовуєте емулятор терміналу, який підтримує 256 кольорів, і не хочете використовувати власні соляризовані кольори терміналу, вам потрібно буде використовувати деградовану 256-кольорову схему. Для цього просто додайте наступний рядок перед соляризованою лінією colorschem:

let g:solarized_termcolors=256

Знову ж таки, я рекомендую просто змінити кольори терміналів на Соляризовані значення або вручну, або за допомогою однієї з багатьох схем терміналів, доступних для імпорту.


Це був єдиний спосіб, яким я міг отримати iTerm2 для використання соляризованих кольорів у MacVim, що не є графічним інтерфейсом.
Аарон Трібу

4

Відповідь Білла Тернера працює, але є спосіб, як кольори точно відповідатимуть MacVim. Solarized має підтримку спеціально для iTerm2, серед інших емуляторів терміналів.

  1. Перейдіть на сторінку github, соляризовану iterm2-colors
  2. Дотримуйтесь інструкцій у розділі "Встановлення"
  3. Переконайтеся, що у .vimrc є рядок colorscheme solarized

Це має встановити кольори vim в iTerm2 такими, якими вони є в редакторах графічного інтерфейсу.


Як випливає з відповіді, відповідь Білла Тернера також є правильною, але ЦЕ є офіційним (отже, правильним) способом встановити solarizedтему.
Може

1

Простий спосіб вирішити цю проблему:

У кольорах dir на vim-color-solarized існує арків із назвою 'solarozed.vim'

Відкрийте цей файл і виконайте пошук:
exe "let s: bg_back = '" .s: vmode. "Bg =". S: back. "'"

замінити на:
exe "let s: bg_back = '" .s: vmode. "bg =". s: none. "'"


1

Для будь-яких інших проблем, таких як я, я встановив кольоровий профіль iterm2, соляризований . Встановлення vim-color-solarized на пакети vim та дотримання інструкцій було непотрібним та несумісним. Були смішні проблеми з висвітленням, як у знімку екрана вище.

Урок засвоєний: не робіть і те, і інше.


0

Я спробував усі попередні пропозиції. Я щойно додав set t_Co=256до .vimrc, і це було виправлено. Мені не потрібно було створювати tmuxпсевдонім або змінювати конфігураційний файл.


0

Жодна з попередніх відповідей не спрацювала для мене. Мабуть, я пропав безвісти:

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