在我的.vimrc中,如何检查配色scheme的存在?

在一个.vimrc ,只有在存在的情况下才能加载配色scheme?

如果你只是想加载它,如果它存在,做别的事情,使用:colorscheme 试图抓住 :colorscheme 兰迪已经足够了。 如果你对其他部分不感兴趣,那么简单一点:silent! colorscheme :silent! colorscheme就够了。

否则, globpath()是要走的路。 你可以,tehn,如果你真的希望检查每个返回filereadable()path。

 " {rtp}/autoload/has.vim function! has#colorscheme(name) pat = 'colors/'.a:name.'.vim' return !empty(globpath(&rtp, pat)) endfunction " .vimrc if has#colorscheme('desert') ... 

@eckes答案的替代方法是尝试加载colorscheme并处理错误(如果不存在):

 try colorscheme mayormaynotexist catch /^Vim\%((\a\+)\)\=:E185/ " deal with it endtry 

您可以使用filereadable函数来检查是否存在配色scheme(例如schemename ):在~/vimfiles/colors (Win32,对于Unix使用~/.vim/colors/ )下执行一次,在$VIMRUNTIME/colors/下执行一次:

 if filereadable("/path/to/schemename.vim") colo schemename endif 

我的方法是类似的,

 if filereadable( expand("$HOME/.vim/colors/railscast.vim") ) colorscheme railscast endif 

这比硬编码整个path更健壮一些。