Yanıtlar:
En kolay yol :help c_Ctrl-d
sonra kullanmaktır :colorscheme
.
Böylece, :colorscheme
Ctrl-delinizde bulunan renk kimyasallarını çıkartabilirsiniz.
Sonra bir boşluk olduğundan emin olun :colorscheme
Listeyi göstermenin başka bir yolu da set wildmenu
. Bununla birlikte, :colorscheme
+ space
+ 'dan sonra tab
bir tamamlama listesi görüntülenir ve ayrıca ok tuşuyla veya Ctrl-N
ve ile seçilebilir Ctrl-P
. Bu sadece colorscheme üzerinde değil, aynı zamanda diğer cmdline tamamlama üzerinde de çalışır. Davranış bundan etkilenir wildmode
ve varsayılan değere daha iyi ayarlanır full
.
Bunu Vimscript'te yapmak istiyorsanız , getcompletion () işlevini kullanarak bir renk şemaları listesi alabilirsiniz :
let c = getcompletion('', 'color')
echo c
Bu, dosya sistemini tarayan mevcut Vimscript yanıtından biraz daha basittir.
Daha :help getcompletion()
fazla bilgi için bakınız.
Diğer cevaplar, hangi renk kimyasallarının mevcut olduğunu göstermenin etkileşimli yolunu gösteriyor, ancak hiç kimse vimscript'te kullanılabilecek bir liste almanın bir yolundan bahsetmedi. Bu, bu soruya verdiğim cevabın bir uyarlaması .
Bu çözüm, 'runtimepath'
kullanılabilir tüm colorcheme dizinlerini alma seçeneğini kullanır ve uzantıları kaldırılmış olarak bu dizinlerdeki vimscript dosyalarının bir listesini alır. Bu, bunu yapmanın en güvenli yolu olmayabilir, bu nedenle iyileştirmeler açıktır:
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
Daha sonra bu işlev tarafından döndürülen listeyi vimscript içinde kullanabilirsiniz. Örneğin, her renk şemasını yankılayabilirsiniz:
for c in GetColorschemes() | echo c | endfor
Her bir işlevin veya komutun burada ne yaptığını açıklamayacağım, ancak burada kullandıklarımın tümü için yardım sayfalarının bir listesi:
: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()