Listar esquemas de cores válidos?


15

Acabei de descobrir sobre o :colorschemecomando. Existe uma maneira de obter uma lista de esquemas de cores válidos no Vim? Eu gostaria de poder fazer isso no Vim, não em uma lista em algum lugar da Internet.

Respostas:



10

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-Ne Ctrl-P. Este não é apenas um trabalho sobre esquema de cores, mas também sobre outras finalizações de cmdline. O comportamento é afetado wildmodee melhor definido como o valor padrão full.


3

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.


2

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()

-1

Você pode tentar isso

:colorscheme, Em seguida, pressione a spacetecla e, em seguida, a tabtecla.


3
Note que é que depende em seus wildmenue wildcharajustes e que essa resposta é basicamente o mesmo que do tivn um
statox
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.