Respostas:
A maneira mais fácil é usar :help c_Ctrl-d
depois :colorscheme
.
Assim, :colorscheme
Ctrl-dproduzirá os esquemas de cores disponíveis.
Outra maneira de mostrar a lista é por set wildmenu
. Com isso, após :colorscheme
+ space
+ tab
, uma lista de conclusão é exibida e também selecionável com a tecla de seta ou Ctrl-N
e Ctrl-P
. Este não é apenas um trabalho sobre esquema de cores, mas também sobre outras finalizações de cmdline. O comportamento é afetado wildmode
e melhor definido como o valor padrão full
.
Se você quiser fazer isso no Vimscript, poderá obter uma Lista de esquemas de cores usando a função getcompletion ():
let c = getcompletion('', 'color')
echo c
Isso é um pouco mais simples que a resposta existente do Vimscript, que verifica o sistema de arquivos.
Veja :help getcompletion()
para mais detalhes.
As outras respostas mostram a maneira interativa de mostrar quais esquemas de cores estão disponíveis, mas ninguém mencionou uma maneira de obter uma lista que pode ser usada no vimscript. Esta é uma adaptação da minha resposta para esta pergunta .
Esta solução usa a 'runtimepath'
opção de obter todos os diretórios de esquema de cores disponíveis e, em seguida, busca uma lista dos arquivos vimscript nesses diretórios com suas extensões removidas. Talvez essa não seja a maneira mais segura de fazê-lo, portanto, as melhorias são bem-vindas:
function! GetColorschemes()
" Get a list of all the runtime directories by taking the value of that
" option and splitting it using a comma as the separator.
let rtps = split(&runtimepath, ",")
" This will be the list of colorschemes that the function returns
let colorschemes = []
" Loop through each individual item in the list of runtime paths
for rtp in rtps
let colors_dir = rtp . "/colors"
" Check to see if there is a colorscheme directory in this runtimepath.
if (isdirectory(colors_dir))
" Loop through each vimscript file in the colorscheme directory
for color_scheme in split(glob(colors_dir . "/*.vim"), "\n")
" Add this file to the colorscheme list with its everything
" except its name removed.
call add(colorschemes, fnamemodify(color_scheme, ":t:r"))
endfor
endif
endfor
" This removes any duplicates and returns the resulting list.
return uniq(sort(colorschemes))
endfunction
Você pode usar a lista retornada por esta função no vimscript. Por exemplo, você pode simplesmente repetir cada esquema de cores:
for c in GetColorschemes() | echo c | endfor
Não explicarei o que cada função ou comando individual faz aqui, mas aqui está uma lista das páginas de ajuda de todas as que usei:
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
Você pode tentar isso
:colorscheme
, Em seguida, pressione a spacetecla e, em seguida, a tabtecla.
wildmenu
e wildchar
ajustes e que essa resposta é basicamente o mesmo que do tivn um