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

107

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

:colorscheme SCHEME_NAME

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

:colorscheme

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

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

gotgenes
источник

Ответы:

159

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

Поэтому попробуйте это:

echo g:colors_name

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

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

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

Затем сделайте:

:call ShowColourSchemeName()

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

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

:help colorscheme
DrAl
источник
Закрывающая двойная кавычка после "defaultпропуска?
Бенджамин В.
38

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

:help colorscheme 

Больше подробностей.

Татуировка
источник
3
Мне это не подходит. Это говорит default. И цветовую схему, которую я получаю, когда выполняю, :colo defaultэто еще одна.
daVe 07
4

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

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

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

Joeytwiddle
источник