Я не вставил color xxx
свой .vimrc
. Итак, я вижу это, когда впервые открываю свою .vimrc
.
Тогда я печатаю :color darcula
. И это меняется к этому.
:color
дает мне darcula
здесь (естественно).
Тогда я печатаю :set background=dark
. И это меняется к этому.
:color
дает мне default
здесь (удивительно).
Итак, мой вопрос, что именно делает :set background=dark
?
Я пытался :h background
и не нашел ничего полезного. Я понимаю, что эта команда на самом деле не меняет фон, только vim изменит цвета соответственно. Но я все еще хочу задать этот вопрос. Потому что я действительно доволен цветом после, :color darcula
и :set background=dark
поэтому мне интересно, как написать свою собственную цветовую схему без необходимости вставлять set background=dark
мою .vimrc
.
Я взял совет от @statox и поставил set background=dark
на последнюю строчку своего darcula.vim
. Затем color darcula
дает мне третий скриншот. Однако, когда я помещаю его в первую строку, color darcula
выдает мне второй скриншот. Также set bg=dark
изменяет его на третий скриншот.
Предполагая, что, поместив его в первую строку, я говорю vim, что эта схема цветов предназначена для темного фона. Поместив его в последнюю строку на контрасте, я позволю vim предположить, что эта цветовая схема предназначена для светлого фона, а затем заставлю vim изменить часть ее самостоятельно (когда она обрабатывает последнюю строку).
Если то, что я предполагаю, произошло, правда, мой вопрос все еще остается без ответа. Что именно изменило vim, когда я использую set bg=dark
ПОСЛЕ того, как он загрузил светлую цветовую схему?
Вся моя конфигурация vim доступна по адресу https://github.com/MichaelMa2014/.vim
источник
:set bg=light
и:set bg=dark
не противоположны, но что именно они не объяснена. Также этот пост, почему я хочу избежать:set background=dark
в моем.vimrc
.Ответы:
Что происходит, когда ты
:set background
Основной механизм, с помощью которого
:set background
работает, на самом деле довольно прост, и он задокументирован (хотя и не особенно четко) в:help 'background'
.Итак, что на самом деле происходит при изменении
'background'
опции:Если цветовая схема не загружена в данный момент
Vim перезагружает цвета по умолчанию, используя цвета переднего плана, которые считаются подходящими для новой настройки
'background'
Если цветовая схема в настоящее время загружена
Vim перезагружает цветовую схему. Когда цветовая схема загружена, либо цветовая схема устанавливает цвета, соответствующие новой настройке
'background'
, либо цветовая схема сбрасывается'background'
до старого значения.Как вы уже описали, эта
'background'
опция предназначена не для установки фона, а для информирования Vim, является ли фон темным или светлым.Поэтому, если цветовая схема сбрасывается
'background'
, Vim принимает это, чтобы означать, что цветовая схема просто не поддерживает новую настройку'background'
. Поскольку пользователь указал, что он использует такой фон, это означает, что текущая цветовая схема больше не подходит, и поэтому Vim сбрасываетg:colors_name
и затем загружает цвета по умолчанию.Если вы хотите изучить фактический код, который запускается, когда
'background'
он установлен, вы можете начать здесь .Что происходит в вашей установке
Странное поведение, которое вы описываете (в первой версии вашего вопроса), может быть объяснено этой строкой в приведенной выше документации:
Проблема в том, что ваш
colors/darcula.vim
файл не устанавливает это значение, и поэтому, несмотря на то, что цвета изменились при вызове:color darcula
, Vim не считает цветовую схему загруженной в данный момент.Поэтому при вызове
:set background=dark
Vim выполняет шаг, описанный выше в разделе «Если цветовая схема не загружена», и устанавливает цвета по умолчанию для темного фона. Это объясняет, почему:color
тогда отчетыdefault
.(Заметим, однако, что установка цвета по умолчанию делает не , как можно было бы ожидать, удалить все цвета , которые ранее были установлены, и именно поэтому вы в конечном итоге с результатами , которые вы видите, а не цветами , которые отображаются при В первую очередь запустите Vim. Здесь обсуждается этот вопрос. )
Короче говоря, ваша цветовая схема неверно настроена: см.
:edit $VIMRUNTIME/colors/README.txt
(В частности, раздел внизу) для получения более подробной информации об этом, а также о взаимодействии'background'
цветовых схем и между ними .источник
Документ
:h 'background'
должен предоставить всю необходимую информацию:Ваша цветовая схема определяет 2 группы цветов: те, которые используются на светлом фоне, и те, которые используются на темном фоне.
background
Опция указывает Vim , которая должна быть использована группа цветов , определенных вашим ColorScheme.Это продолжение предыдущего абзаца: это схема цветов, которая определяет группы цветов и
background
выбирает одну из этих групп.Наконец, если вы хотите написать свою собственную цветовую схему, не вставляя
set background=dark
в свой vimrc, помните, что схема цветов - это не что иное, как программа в vimscript, поэтому ничто не мешает вам использовать команду непосредственно в коде вашей схемы цветов, например, jellybeans или подмастерьеисточник
set background=dark
вdarcula.vim
и произвел тот же эффект, что, когда я положил его в.vimrc
. Но мне все еще интересно, как именно Vim "пытается использовать цвета, которые хорошо смотрятся на темном фоне"? Есть ли где-то определенное отображение или что-то подобное?