Відповіді:
Найпростіший спосіб - використовувати :help c_Ctrl-d
після :colorscheme
.
Отже, :colorscheme
Ctrl-dвиведемо доступні вам кольорові схеми.
Переконайтеся, що є пробіл :colorscheme
Ще один спосіб показати список - за допомогою set wildmenu
. Після цього після :colorscheme
+ space
+ tab
відображається список завершення, а також вибирається за допомогою клавіші зі стрілкою або Ctrl-N
та Ctrl-P
. Це не лише робота над кольоровою схемою, але й над іншими завершеннями cmdline. На поведінку впливає wildmode
і краще встановити значення за замовчуванням full
.
Якщо ви хочете зробити це у Vimscript, ви можете отримати Список кольорових схем за допомогою функції getcompletion ():
let c = getcompletion('', 'color')
echo c
Це трохи простіше, ніж існуюча відповідь Vimscript, яка сканує файлову систему.
Дивіться :help getcompletion()
докладнішу інформацію.
Інші відповіді показують інтерактивний спосіб показу, які кольорові схеми доступні, але ніхто не згадав про спосіб отримання списку, який може бути використаний у vimscript. Це адаптація моєї відповіді на це питання .
Це рішення використовує 'runtimepath'
опцію для отримання всіх доступних каталогів кольорової схеми, а потім отримує список файлів 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()