问题描述
|
在“ 0”中,是否可以加载仅存在的配色方案?
解决方法
如果只想在存在时尝试加载exists1ѭ(如果Randy这样做的话),则只需要加载它就可以了。如果您对其他部分不感兴趣,则只需一个
: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\'
(又名\'rtp\'
)。因此globpath()
。注意,:colorscheme name
命令在in11ѭ中搜索。
,@eckes答案的替代方法是尝试加载colorscheme并处理错误(如果不存在):
try
colorscheme mayormaynotexist
catch /^Vim\\%((\\a\\+)\\)\\=:E185/
\" deal with it
endtry
,您可以使用filereadable
函数来检查是否存在配色方案(例如schemename
):在~/vimfiles/colors
下检查一次(对于Win32,对于Unix使用~/.vim/colors/
),然后在ѭ17under下检查一次:
if filereadable(\"/path/to/schemename.vim\")
colo schemename
endif
,我的方法很相似
if filereadable( expand(\"$HOME/.vim/colors/railscast.vim\") )
colorscheme railscast
endif
这比对整个路径进行硬编码要强一些。
,通常,如果没有我的收藏夹,我会使用带有后备选项的收藏夹colorscheme
。嵌套的try
可以完成以下工作:
try
colorscheme solarized
catch
try
colorscheme peachpuff
catch
endtry
endtry
如果ѭ20都不可用,则将加载默认的(20(无论系统上发生了什么)。如果没有一种或两种颜色方案,则不会显示任何错误。首先输入您喜欢的20英镑。
另外,不带参数的catch
会捕获任何错误。如果您要处理给出不同错误消息的不同语言环境,这将很方便。
,这是我in0文件中的wat。
if filereadable( expand(\"$HOME/.vim/colors/sublimemonokai.vim\") )
colorscheme sublimemonokai \"https://github.com/ErichDonGubler/vim-sublime-monokai
\" vim-sublime-monokai only support 256 colours in terminal. If you are using a terminal which support truecolor like iterm2,enable the GUI color
set termguicolors
\" Otherwise,use below setting to activate the 256 color in terminal
set t_Co=256
else
echom \"The sublimemonokai.vim were not found to be used as colorscheme. elflord will be set for the timebeing...\"
colorscheme elflord
endif
基本上,它会检查机器上是否存在我喜欢的配色方案。如果是这样,它将选择它并应用所有必要的设置。否则,它将选择vim随附的合适的配色方案。
通过查看其他答案,我的答案与@ user427390答案共享一部分,它还具有其他条件。
以下链接对我编写自己的.vimrc
和vim相关文件很有帮助:
http://learnvimscriptthehardway.stevelosh.com/