Неправильные цвета с vim в iTerm2 с использованием Solarized


84

У меня странная проблема с iTerm2 в терминале vim (без графического интерфейса) и с солнечной цветовой схемой. Во-первых, я настроил iTerm2 на использование темной солнечной цветовой схемы.

Я также использую solarized для vim. В моем .vimrc есть следующие строки

set background=dark
colorscheme solarized

В терминале цветовая схема выглядит некорректно: консоль vim

Для справки вот как это выглядит в MacVim (gui vim) 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

Обновление: по словам Джима Стюарта, это работает и с Китти .


То же самое и здесь ... Спасибо за это решение!
freitass

2
Я использую KiTTY (производное от PuTTY) в Windows 7 и let g:solarized_termtrans = 1исправил для меня проблему, когда цвет фона в пустых строках был серым, но цвет фона в строках с текстом был черным после содержимого.
Джим Стюарт,

они не черные туоги :(
Сетерон

Если вы используете любую другую цветовую схему, вы можете 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 из раскрывающегося списка «Загрузить предустановки».

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

Или же:

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

    синтаксис enable set background = dark colorscheme solarized

  2. Установите для параметра Report Terminal Type значение xterm-256color.

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

  1. Установите предустановку цвета в профиле на Solarized Dark

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


Проголосуйте за, потому что это была подсказка, которая мне нужна, чтобы попробовать разные цветовые предустановки, которые привели меня к открытию, что escape-коды цвета после 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 цветов, и не хотите использовать настраиваемые цвета терминала Solarized, вам нужно будет использовать ухудшенную схему 256 цветов. Для этого просто добавьте следующую строку перед линией соляризации colorschem:

let g:solarized_termcolors=256

Опять же, я рекомендую просто изменить цвета вашего терминала на значения Solarized вручную или с помощью одной из множества схем терминала, доступных для импорта.


Это был единственный способ заставить iTerm2 использовать солнечные цвета в MacVim без графического интерфейса.
Аарон Трибу

4

Ответ Билла Тернера работает, но есть способ получить цвета, точно соответствующие MacVim. Solarized поддерживает, в частности, iTerm2, а также другие эмуляторы терминала.

  1. Перейдите на страницу github iterm2-colors-solarized
  2. Следуйте инструкциям в разделе «Установка».
  3. Убедитесь, что в вашем .vimrc есть строка colorscheme solarized

Это должно установить цвета vim в iTerm2 точно такими же, как в редакторах gui.


Как следует из ответа, ответ Билла Тернера также верен, но ЭТО ОФИЦИАЛЬНЫЙ (следовательно, правильный) способ установить 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 solarized . Установка vim-color-solarized в пакеты vim и следование инструкциям было ненужным и несовместимым. Были забавные проблемы с подсветкой, как на снимке экрана выше.

Извлеченный урок: не делайте и того, и другого.


0

Я испробовал все предыдущие предложения. Я только что добавил set t_Co=256в .vimrc, и это было исправлено. Мне не нужно было создавать tmuxпсевдоним или изменять файл конфигурации.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.