7

У меня чистый Mac установлен под OS X 10.11.4.
Я установил iTerm 2 и настроил его на использование oh-my-zsh.

Я пытаюсь создать тему для моего iTerm. Я пытаюсь использовать тему avit.

Это должно выглядеть так:

Но то, что я получаю, это:

Vim также пострадал от этого, я ожидаю:

Что я получаю:

Вот мои предпочтения:

Я поигрался с типом терминала отчета, но этот работает лучше всех, так как другие еще более отстали.

Мой .zshrc выглядит так:http://pastebin.com/ixe72yjP
Обратите внимание, что pastebin говорит тему кардана, однако она не работает ни с одной темой.

РЕДАКТИРОВАТЬ
Кажется, что цвета iTerm перезаписывают цвета, определенные в темах. Это ожидаемое поведение?

1 ответ1

5

Здесь работают два слоя настроек / тем:

  • Терминал или эмулятор терминала, в вашем случае iTerm2

    В зависимости от терминала поддерживается только ограниченная цветовая палитра. "Традиционно" было 16 цветов: 8 нормальных и 8 светлых / ярких. Им присваиваются коды от 0 до 7 и от 8 до 15 соответственно. У них также есть имена с кодами n и n+8 имеют одно и то же имя:

    • 0 и 8: черный
    • 1 и 9: красный
    • 2 и 10: зеленый
    • 3 и 11: желтый
    • 4 и 12: синий
    • 5 и 13: пурпурный
    • 6 и 14: голубой
    • 7 и 15: белый

    Хотя названия четко определены, точные значения цвета не отличаются и сильно различаются даже в настройках по умолчанию для разных терминалов. (Для примера посмотрите раздел Цвета на странице Википедии, посвященный escape-коду ANSI). Большинство эмуляторов терминала позволяют пользователю свободно настраивать эти 16 цветов (посмотрите на вкладку « Цвета » в настройках iTerm).

    Многие (если не большинство) современных эмуляторов терминала поддерживают 256-цветовую палитру, которая состоит из 16 цветов, упомянутых выше, 216 цветов в 6x6x6 RGB-цвете и 32 оттенков серого. Помимо первых 16 цветов, эти цвета кажутся одинаковыми для большинства эмуляторов терминалов (см. Мой ответ на вопрос по этому поводу в SO для более подробной информации).

    Существует даже растущая поддержка 24-битного истинного цвета. Согласно этому Gist iTerm2 уже поддерживает это в бета-версиях. (Вы можете проверить это с помощью for a in {0..255}; printf "\x1b[48;2;255;${a};0m \x1b[0m" . Следует напечатать плавный градиент от красного до желтого.)

    Вкратце: терминальная тема (iTerm2) - это только цветовая палитра, которая отображает индексы в истинные значения цвета RGB. Некоторые терминалы (по крайней мере, в Linux; я не знаю, в частности, об OS X и iTerm2), реализуют переключаемые цветовые темы.

  • Оболочка или приложение, в вашем случае zsh с инфраструктурой конфигурации oh-my-zsh и vim:

    Поскольку 24-битный истинный цвет еще широко не поддерживается, темы обычно устанавливают цвета по номеру индекса на палитре терминалов или даже по имени. Например

    print -P '%F{yellow}yellow %F{2}green %1Fred %F{117}light blue' 
    

    print -P интерпретирует строку так, как это было бы в приглашении. %F меняет цвет переднего плана.

    Хотя большинство терминалов поддерживают 256 цветов, все еще есть довольно много тем, которые используют только (первый) 16 цветов. Для этого есть несколько причин:

    • Он будет работать "везде" (старые машины, неправильно настроенные терминалы).
    • Для большинства эмуляторов терминала цвета могут быть легко изменены по вкусу пользователем.
    • Некоторые темы могут даже предшествовать широкой доступности 256-цветных терминалов.

    Нельзя сказать, что нет тем, которые используют 256 цветов, наоборот. Мне просто кажется, что тот, кого вы выбрали, не один из них.

    Вкратце: терминальная (или прикладная) тема может назначать только цветовые коды, а не значения истинного цвета RGB. Фактические цвета зависят от настроек терминала. Если цвет меняется в терминале, это влияет на все приложения, работающие в нем.

Таким образом, разница между скриншотами ожидаемого результата и того, что вы на самом деле получаете, обусловлена разницей в настройках цвета терминалов. Чтобы решить это, вы можете:

  • изменить настройки iTerm2 , чтобы они соответствовали цветам на скриншотах
  • использовать другую тему, которая использует только цвета 16-256 (которые в основном фиксированы)
  • используйте программное обеспечение с поддержкой истинного цвета (например, бета-версию iTerm2 (она может скоро появиться в релизной версии, если еще не будет) и neovim) и темы (кажется, что neovim использует настройки графического интерфейса пользователя, когда включен истинный цвет). Gist, упомянутый выше, имеет список.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .