Geçerli renk düzenleri listeleniyor mu?


15

:colorschemeKomutu yeni öğrendim . Vim'den geçerli renk şemalarının bir listesini almamın bir yolu var mı? Bunu internetteki bir listeden değil, Vim içinden yapabilmek istiyorum.

Yanıtlar:


17

En kolay yol :help c_Ctrl-dsonra kullanmaktır :colorscheme.

Böylece, :colorschemeCtrl-delinizde bulunan renk kimyasallarını çıkartabilirsiniz.

Sonra bir boşluk olduğundan emin olun :colorscheme


Windows üzerinde de çalıştı!
isomorphismes

10

Listeyi göstermenin başka bir yolu da set wildmenu. Bununla birlikte, :colorscheme+ space+ 'dan sonra tabbir tamamlama listesi görüntülenir ve ayrıca ok tuşuyla veya Ctrl-Nve ile seçilebilir Ctrl-P. Bu sadece colorscheme üzerinde değil, aynı zamanda diğer cmdline tamamlama üzerinde de çalışır. Davranış bundan etkilenir wildmodeve varsayılan değere daha iyi ayarlanır full.


3

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.


2

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()

-1

Bunu deneyebilirsin

:colorscheme, Sonra spacetuşuna ve sonra tabtuşuna basın.


3
Bu sizin wildmenuve wildcharayarlarınıza bağlı olduğunu ve bu cevabın temelde tivn'inkiyle
statox
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.