Почему 256-цветная палитра изменяется в терминале VIM на OS X? - PullRequest
8 голосов
/ 01 апреля 2012

Я играл с цветовыми схемами для терминала VIM и обнаружил что-то досадно разочаровывающее, что до сих пор не смог решить.

Я ожидаю, что 16 системных цветов изменятся. Они явно настраиваемые. По этой причине я попытался использовать 256-цветовую палитру для создания цветовой схемы VIM, которая была бы одинаковой независимо от 16 (настраиваемой) системной цветовой палитры терминала.

Я использовал только цвета из 256 цветовой палитры для всего, включая фон. Однако я заметил, что если я открываю терминалы с разными цветами фона и текста, заданными для терминалов, цветовые схемы VIM в этих двух терминалах выглядят совершенно по-разному.

Я не вижу аналогичного поведения в Ubuntu, даже если терминалы имеют разный фон, передний план и системные цветовые палитры.

Я с радостью приму ответ, объясняющий, почему это происходит.

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

Ответы [ 6 ]

4 голосов
/ 01 апреля 2012

По умолчанию терминалы ANSI представляют собой 16 цветовых устройств, и цветовые схемы Vim, которые работают в gvim, не будут работать должным образом в терминале.

Некоторые терминалы могут поддерживать 88 или 256 цветов.Вы можете сказать Vim об этом, установив t_Co.Конечно, 256 цветов по-прежнему меньше, чем полный RGB, который есть у вас в gvim.

Существует пакет для vim под названием CSApprox, разработанный Мэттом Возниски.Это позволяет вам использовать gvim цветовые схемы с приблизительными цветами.

Это то, что я использую сам.

CSApprox включает файл документации, который объясняет все лучше, чем я могу здесь.

URL: http://www.vim.org/scripts/script.php?script_id=2390

Удачи.

PS по вашему вопросу Однако я заметил, что если я открою терминалы с другим цветом фона и текста, указанным дляВ терминалах цветовые схемы VIM выглядят совершенно по-разному в этих двух терминалах.

Похоже, что терминал OSX не отделяет определение цвета от палитры 256 цветов xterm;то есть, манипулируя его настройками, вы портите палитру или что-то в этом роде.

Терминалы, вероятно, должны хранить 16-цветную пользовательскую настройку отдельно от 256-цветовой палитры.

2 голосов
/ 06 апреля 2012

Терминал динамически регулирует некоторые цветовые значения, чтобы обеспечить минимальную контрастность с цветом фона.Возможно, это то, что вы видите.

Пожалуйста, приложите скриншот, показывающий две разные цветовые схемы.Хороший скрипт для просмотра доступных цветов: 256colors2.pl .

0 голосов
/ 29 сентября 2017

В Terminal.app, также называемом Apple Terminal, цвета изменятся, если цвет фона также не установлен явно.

Таким образом, с вашей цветовой схемой вы должны установить цвет фона по умолчанию, используя цветовую группу Normal, например ::100100

hi Normal ctermfg=188 ctermbg=234

и тогда вы не должны видеть никаких дальнейших изменений в цветах.

Примечание: я заметил только то, что на передний план воздействуют предположительно, чтобы вы не пропустили ни одного важного вывода;)

0 голосов
/ 07 августа 2014

Если вы используете iTerm2, вам может потребоваться изменить тип терминала, о котором он сообщает.

В настройках iTerm2> Профиль> Терминал> Тип терминала отчета установите значение xterm-256color

0 голосов
/ 04 апреля 2012

Цветовой режим 256 по-прежнему является индексированной палитрой, такой же, как режимы 8 и 16 цветов. Приложение просто выбирает цвет по индексу из палитры, и это до терминала, чтобы решить, какой цвет это будет на самом деле.

То, что два разных терминала выбирают одинаковые цвета для этих индексов, может быть просто фактом, что в 216-цветном RGB-кубе есть 6 уровней каждого компонента, поэтому «очевидным» естественным способом назначения этих цветов будет выберите каждого из списка (0, 0x33, 0x66, 0x99, 0xcc, 0xff). Я полагаю, что большинство терминалов будут делать это и поэтому будут давать одинаковые цвета с одинаковыми индексами.

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

0 голосов
/ 02 апреля 2012

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

Что ж, я все еще на 10.6.8, поэтому мне никогда не нравилась способность Terminal.app отображать 256 цветов.

Но, AFAIK, его 16 стандартных цветов не взяты из палитры X11.Они, вероятно, где-то жестко запрограммированы, и их значения в любом случае настраиваются пользователем.Из-за этого я понятия не имею, почему изменение значения Red по умолчанию на что-либо изменит внешний вид вашей схемы цветов Vim.

Однако Terminal.app (как и большинство других эмуляторов терминала) позволяет вам изменятьзначения Background, Text, Bold, Selection и Cursor.В зависимости от того, как написаны ваши цветовые схемы, некоторые из этих настроек могут переопределять части вашей цветовой схемы, Background, особенно это заметно.

У меня был фон Terminal.app, соответствующий фону моей цветовой схемы Vim, сотличные результаты.Ну, по крайней мере, для эмулятора терминала с 16 цветами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...