Como saber qual esquema de cores uma sessão do Vim usa atualmente

107

Você pode definir o esquema de cores do Vim emitindo

:colorscheme SCHEME_NAME

mas, curiosamente, você não pode obter o esquema usado atualmente emitindo

:colorscheme

pois isso resulta em " E471: Argument required". Também não vejo o esquema de cores listado na saída de :set.

Então, como você descobrirá o esquema de cores atual em uso (além de alternar manualmente os temas até reconhecê-lo)?

Gotgenes
fonte

Respostas:

159

Não há uma maneira garantida (como um esquema de cores é essencialmente uma carga de comandos do vim que são originados). No entanto, por convenção, deve haver uma variável g:colors_nameque é definida para o nome do esquema de cores.

Portanto, tente isto:

echo g:colors_name

Se você obtiver E121, é um esquema de cores mal feito ou o padrão.

Uma maneira mais brilhante de fazer isso é (para versões recentes do vim):

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

Então faça:

:call ShowColourSchemeName()

Se disser "padrão", faça :colorscheme defaulte veja se as cores mudam. Se isso acontecer, você está usando um esquema de cores malformado e não há muito o que fazer a respeito, a não ser alternar manualmente os temas até reconhecê-lo.

A variável g:colors_nameestá documentada aqui :

:help colorscheme
DrAl
fonte
A aspa dupla de fechamento é "defaultperdida?
Benjamin W.
38

A melhor opção é usar :coloou :colorschemeno vim atual e o texto do esquema de cores real é mostrado. Por favor, veja,

:help colorscheme 

para mais detalhes.

Gattoo
fonte
3
Não funciona para mim. Diz default. E o esquema de cores que recebo quando executo :colo defaulté outro.
dia
4

Uma versão de uma linha da resposta do DrAl:

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

A get()função voltará a 'default'se a variável ainda não tiver sido definida.

joeytwiddle
fonte