Глядя на menu.vim моей системы (ищите «Подменю цветовой схемы») и ответ @ chappar, я нашел следующую функцию:
" Returns the list of available color schemes
function! GetColorSchemes()
return uniq(sort(map(
\ globpath(&runtimepath, "colors/*.vim", 0, 1),
\ 'fnamemodify(v:val, ":t:r")'
\)))
endfunction
Она выполняет следующие действия:
- Получает список доступных сценариев цветовой схемы по всем путям времени выполнения (globpath, runtimepath)
- Сопоставляет пути сценариев с их базовыми именами (удаляет родительские каталоги и расширения) (map, fnamemodify)
- Сортирует и удаляет дубликаты (uniq, sort)
Затем, чтобы использовать функцию, я делаю что-то вроде этого:
let s:schemes = GetColorSchemes()
if index(s:schemes, 'solarized') >= 0
colorscheme solarized
elseif index(s:schemes, 'darkblue') >= 0
colorscheme darkblue
endif
Что означает, что я предпочитаю «соляризованный»а затем «темные» схемы;если ни один из них не доступен, ничего не делайте.