Wymienić prawidłowe schematy kolorów?

15

Właśnie dowiedziałem się o :colorschemepoleceniu. Czy istnieje sposób, aby uzyskać listę prawidłowych schematów kolorów od Vima? Chciałbym móc to zrobić z poziomu Vima, a nie z listy gdzieś w Internecie.

Cofnij
źródło

Odpowiedzi:

17

Najłatwiej jest użyć :help c_Ctrl-dpo :colorscheme.

Tak, :colorschemeCtrl-dwyświetli kolory, które masz do dyspozycji.

Upewnij się, że jest po nim spacja :colorscheme

akshay
źródło
działał też na Windowsie!
izomorfizmy
10

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-Ni Ctrl-P. Jest to nie tylko praca z colorscheme, ale także z innymi uzupełnieniami cmdline. Na zachowanie ma wpływ wildmodewartość domyślna i lepiej ją ustawić full.

tivn
źródło
3

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.

Bogaty
źródło
2

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()
Wiecznie zielone drzewo
źródło
-1

Możesz tego spróbować

:colorscheme, Następnie naciśnij spaceklawisz, a następnie tabklawisz.

ankur
źródło
3
Zauważ, że to zależy od twojego wildmenui wildcharustawień, i że ta odpowiedź jest w zasadzie taka sama jak odpowiedź tivn
statox