在我的.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更健壮一些。