Odpowiedzi:
Najłatwiej jest użyć :help c_Ctrl-d
po :colorscheme
.
Tak, :colorscheme
Ctrl-dwyświetli kolory, które masz do dyspozycji.
Upewnij się, że jest po nim spacja :colorscheme
Innym sposobem wyświetlenia listy jest set wildmenu
. Dzięki temu, po :colorscheme
+ space
+ tab
, wyświetlana jest lista zakończeniu, a także możliwość wyboru z klawisza ze strzałką lub Ctrl-N
i Ctrl-P
. Jest to nie tylko praca z colorscheme, ale także z innymi uzupełnieniami cmdline. Na zachowanie ma wpływ wildmode
wartość domyślna i lepiej ją ustawić full
.
Jeśli chcesz to zrobić w Vimscript, możesz uzyskać listę schematów kolorów za pomocą funkcji getcompletion ():
let c = getcompletion('', 'color')
echo c
Jest to nieco prostsze niż istniejąca odpowiedź Vimscript, która skanuje system plików.
Zobacz :help getcompletion()
po więcej szczegółów.
Pozostałe odpowiedzi pokazują interaktywny sposób pokazywania dostępnych kolorów, ale nikt nie wspomniał o sposobie uzyskania listy, którą można by użyć w vimscript. To jest adaptacja mojej odpowiedzi na to pytanie .
To rozwiązanie wykorzystuje 'runtimepath'
opcję pobrania wszystkich dostępnych katalogów colorscheme, a następnie pobiera listę plików vimscript w tych katalogach z usuniętymi rozszerzeniami. To może nie być najbezpieczniejszy sposób, więc usprawnienia są mile widziane:
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
Następnie możesz użyć listy zwróconej przez tę funkcję w vimscript. Na przykład możesz po prostu powtórzyć każdy schemat kolorów:
for c in GetColorschemes() | echo c | endfor
Nie wyjaśnię, co robi tutaj każda funkcja lub polecenie, ale oto lista stron pomocy dla wszystkich, których użyłem:
: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()