Список дійсних кольорових схем?


15

Я щойно дізнався про :colorschemeкоманду. Чи є спосіб отримати список дійсних кольорових схем від Vim? Мені б хотілося це зробити з Vim, а не зі списку десь в Інтернеті.

Відповіді:


17

Найпростіший спосіб - використовувати :help c_Ctrl-dпісля :colorscheme.

Отже, :colorschemeCtrl-dвиведемо доступні вам кольорові схеми.

Переконайтеся, що є пробіл :colorscheme


працювали і на вікнах!
ізоморфізми

10

Ще один спосіб показати список - за допомогою set wildmenu. Після цього після :colorscheme+ space+ tabвідображається список завершення, а також вибирається за допомогою клавіші зі стрілкою або Ctrl-Nта Ctrl-P. Це не лише робота над кольоровою схемою, але й над іншими завершеннями cmdline. На поведінку впливає wildmodeі краще встановити значення за замовчуванням full.


3

Якщо ви хочете зробити це у Vimscript, ви можете отримати Список кольорових схем за допомогою функції getcompletion ():

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

Це трохи простіше, ніж існуюча відповідь Vimscript, яка сканує файлову систему.

Дивіться :help getcompletion()докладнішу інформацію.


2

Інші відповіді показують інтерактивний спосіб показу, які кольорові схеми доступні, але ніхто не згадав про спосіб отримання списку, який може бути використаний у 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()

-1

Ви можете спробувати це

:colorscheme, Потім натисніть spaceклавішу, а потім tabклавішу.


3
Зверніть увагу, що це залежить від ваших wildmenuі wildcharналаштувань, і що ця відповідь в основному така ж, як і відповідь tivn
statox
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.