Как определить, какую цветовую схему использует сессия Vim - PullRequest
95 голосов
/ 10 марта 2010

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

:colorscheme SCHEME_NAME

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

:colorscheme

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

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

Ответы [ 3 ]

142 голосов
/ 10 марта 2010

Там нет гарантированного пути (так как цветовая схема по сути является загрузкой команд 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
34 голосов
/ 28 августа 2012

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

:help colorscheme 

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

0 голосов
/ 11 декабря 2017

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

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

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

...