Как определить, какая цветовая схема используется в сеансе Vim

Вы можете установить цветовую схему Vim, выпустив

:colorscheme SCHEME_NAME

но, как ни странно, вы не можете получить используемую в настоящее время схему, выпустив

:colorscheme

так как это приводит к "E471: Argument required". Я также не вижу цветовую схему, указанную в выводе :set.

Итак, как вы узнаете о текущей используемой цветовой схеме (кроме ручного переключения тем, пока вы ее не узнаете)?

Ответ 1

Нет гарантированного способа (поскольку цветовая схема - это, по сути, нагрузка команд vim, которые получены). Однако по соглашению должна быть переменная g:colors_name, которая задается именем цветовой схемы.

Поэтому попробуйте следующее:

echo g:colors_name

Если вы получаете E121, это либо плохо сделанная цветовая схема, либо она по умолчанию.

Более строгий способ сделать это (для последних версий vim):

function! ShowColourSchemeName()
    try
        echo g:colors_name
    catch /^Vim:E121/
        echo "default
    endtry
endfunction

Тогда do:

:call ShowColourSchemeName()

Если он говорит "default", сделайте :colorscheme default и посмотрите, изменились ли цвета. Если они это сделают, вы используете неправильную цветовую схему, и вы не можете много сделать, кроме как вручную переключать темы, пока не узнаете ее.

Переменная g:colors_name документирована здесь:

:help colorscheme

Ответ 2

Лучше всего использовать :colo или :colorscheme в текущем vim, и отображается фактический текст colorscheme. См.,

:help colorscheme 

для более подробной информации.

Ответ 3

Однострочная версия ответа DrAl:

let current_scheme = get(g:, 'colors_name', 'default')

Функция get() вернется к 'default', если переменная еще не установлена.