Список допустимых цветовых схем?


15

Я только что узнал о :colorschemeкоманде. Есть ли способ получить список допустимых цветовых схем от Vim? Я хотел бы иметь возможность сделать это изнутри Vim, а не из списка где-то в Интернете.

Ответы:



10

Еще один способ показать список - set wildmenu. При этом после :colorscheme+ space+ tabотображается список завершения, который также можно выбрать с помощью клавиши со стрелкой или Ctrl-Nи Ctrl-P. Это не только работа с цветовой схемой, но и над другим завершением cmdline. На поведение влияет wildmodeи лучше установить значение по умолчанию full.


3

Если вы хотите сделать это в Vimscript, вы можете получить список цветовых схем с помощью функции getcompletion ():

let c = getcompletion('', 'color')
echo c

Это немного проще, чем существующий ответ Vimscript, который сканирует файловую систему.

Смотрите :help getcompletion()для более подробной информации.


2

Другие ответы показывают интерактивный способ показать, какие цветовые схемы доступны, но никто не упомянул способ получения списка, который можно использовать в vimscript. Это адаптация моего ответа на этот вопрос .

Это решение использует 'runtimepath'параметр для получения всех доступных каталогов colorscheme, а затем извлекает список файлов vimscript в этих каталогах с удаленными их расширениями. Это может быть не самый безопасный способ сделать это, поэтому улучшения приветствуются:

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

Затем вы можете использовать список, возвращаемый этой функцией в vimscript. Например, вы можете просто повторить каждую цветовую схему:

for c in GetColorschemes() | echo c | endfor

Я не буду объяснять, что каждая отдельная функция или команда делает здесь, но вот список страниц справки для всех тех, которые я использовал:

  • :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

Вы можете попробовать это

:colorschemeЗатем нажмите spaceклавишу, а затем tabключ.


3
Обратите внимание , что это зависит в ваших wildmenuи wildcharнастройках , и что этот ответ является в основном таким же , как tivn в одном
statox
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.