Daftar skema warna yang valid?

15

Saya baru tahu tentang :colorschemeperintah itu. Apakah ada cara agar saya bisa mendapatkan daftar skema warna yang valid dari Vim? Saya ingin dapat melakukan ini dari dalam Vim, bukan dari daftar di suatu tempat di Internet.

Batalkan
sumber

Jawaban:

17

Cara termudah adalah menggunakan :help c_Ctrl-dsetelah :colorscheme.

Jadi, :colorschemeCtrl-dakan menampilkan tema warna yang tersedia untuk Anda.

akshay
sumber
bekerja di windows juga!
isomorfisma
10

Cara lain untuk menampilkan daftar adalah dengan set wildmenu. Dengan ini, setelah :colorscheme+ space+ tab, daftar penyelesaian ditampilkan dan juga dapat dipilih dengan tombol panah atau Ctrl-Ndan Ctrl-P. Ini tidak hanya bekerja pada colorscheme, tetapi juga pada penyelesaian cmdline lainnya. Perilaku dipengaruhi oleh wildmodedan lebih baik diatur ke nilai default full.

tivn
sumber
3

Jika Anda ingin melakukan ini di Vimscript, Anda bisa mendapatkan Daftar skema warna dengan menggunakan fungsi getcompletion ():

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

Ini sedikit lebih sederhana daripada jawaban Vimscript yang ada, yang memindai sistem file.

Lihat :help getcompletion()untuk lebih jelasnya.

Kaya
sumber
2

Jawaban lain menunjukkan cara interaktif untuk menunjukkan colorcheme apa yang tersedia, tetapi tidak ada yang menyebutkan cara mendapatkan daftar yang dapat digunakan dalam vimscript. Ini adalah adaptasi dari jawaban saya untuk pertanyaan ini .

Solusi ini menggunakan 'runtimepath'opsi untuk mendapatkan semua direktori colorscheme yang tersedia, dan kemudian mengambil daftar file vimscript di direktori tersebut dengan ekstensi mereka dihapus. Ini mungkin bukan cara paling aman untuk melakukannya, jadi perbaikan dipersilahkan:

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

Anda kemudian dapat menggunakan daftar ini yang dikembalikan oleh fungsi ini di vimscript. Misalnya, Anda bisa menggema setiap skema warna:

for c in GetColorschemes() | echo c | endfor

Saya tidak akan menjelaskan apa fungsi atau perintah masing-masing individu di sini, tetapi di sini adalah daftar halaman bantuan untuk semua yang saya gunakan:

  • :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()
Pohon cemara
sumber
-1

Anda bisa mencoba ini

:colorscheme, Lalu tekan spacetombol dan kemudian tabkunci.

ankur
sumber
3
Perhatikan bahwa itu tergantung pada pengaturan wildmenudan Anda dan wildcharbahwa jawaban ini pada dasarnya sama dengan yang satu ini
statox