Использование :colorscheme
в try-catch , как Randy сделал может быть достаточно, если вы просто хотите загрузить его, если он существует, и сделать что-то еще в противном случае. Если вас не интересует часть else , достаточно простого :silent! colorscheme
.
В противном случае, globpath()
- это путь. Затем вы можете проверить каждый путь, возвращенный с помощью filereadable()
, если вы действительно хотите.
" {rtp}/autoload/has.vim
function! has#colorscheme(name) abort
let pat = 'colors/'.a:name.'.vim'
return !empty(globpath(&rtp, pat))
endfunction
" .vimrc
if has#colorscheme('desert')
...
РЕДАКТИРОВАТЬ: filereadable($HOME.'/.vim/colors/'.name.'.vim')
может показаться простым и определенно привлекательным, но этого недостаточно, если схема цветов, которую мы ищем, находится в другом месте. Обычно, если он был установлен в другом каталоге, благодаря диспетчеру плагинов. В этом случае единственным надежным способом является регистрация в vim 'runtimepath'
(a.k.a. 'rtp'
). Отсюда globpath()
. Обратите внимание, что команда :colorscheme name
выполняет поиск в {rtp}/colors/{name}.vim
.