回答:
最も簡単な方法は、:help c_Ctrl-d
後に使用すること:colorscheme
です。
したがって、:colorscheme
Ctrl-d使用可能なカラースキームを出力します。
他の回答は、どのカラースキームが利用できるかを示すインタラクティブな方法を示していますが、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()