Luc*_*tte 46
使用:colorscheme
在try-catch代码为兰迪已经做可能是不够的,如果你只是想,如果它存在加载它,做别的事情并非如此.如果你对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')
...
Run Code Online (Sandbox Code Playgroud)
Ran*_*ris 31
@eckes答案的替代方法是尝试加载colorscheme并处理错误(如果它不存在):
try
colorscheme mayormaynotexist
catch /^Vim\%((\a\+)\)\=:E185/
" deal with it
endtry
Run Code Online (Sandbox Code Playgroud)
您可以使用该filereadable
函数来检查颜色方案(例如schemename
)是否存在:检查一次~/vimfiles/colors
(Win32,Unix使用~/.vim/colors/
)和一次下$VIMRUNTIME/colors/
:
if filereadable("/path/to/schemename.vim")
colo schemename
endif
Run Code Online (Sandbox Code Playgroud)
小智 7
我的方法很相似,
if filereadable( expand("$HOME/.vim/colors/railscast.vim") )
colorscheme railscast
endif
Run Code Online (Sandbox Code Playgroud)
这比硬编码整个路径要强一些.
小智 6
通常,如果我最喜欢的内容不可用,我会使用最喜欢的内容colorscheme
并进行后备。嵌套try
将使此工作有效:
try
colorscheme solarized
catch
try
colorscheme peachpuff
catch
endtry
endtry
Run Code Online (Sandbox Code Playgroud)
如果两者都不colorscheme
可用,则会加载默认的(无论您的系统上有什么)。如果一种或两种颜色方案不可用,则不会显示错误。把你最喜欢的放在第一位colorscheme
。
另外,catch
不带参数会捕获任何错误。如果您正在处理给出不同错误消息的不同区域设置,这会很方便。