在我的 .vimrc 中,如何检查配色方案是否存在?
在 .vimrc
中,是否可以仅加载存在的配色方案?
In a .vimrc
, is it possible to load a color scheme only if it exists?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在 .vimrc
中,是否可以仅加载存在的配色方案?
In a .vimrc
, is it possible to load a color scheme only if it exists?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
这是 nvim 的 LUA 解决方案:
Here's LUA solution for nvim:
在 try-catch 中使用
:colorscheme
作为 Randy 已完成 如果您只想加载它(如果存在)并执行其他操作,则可能就足够了。如果您对 else 部分不感兴趣,可以使用简单的:silent! colorcheme
就足够了。否则,
globpath()
是要走的路。然后,如果您确实愿意,可以检查使用filereadable()
返回的每个路径。编辑:
fileread($HOME.'/.vim/colors/'.name.'.vim')
可能看起来很简单,而且绝对有吸引力,但如果我们正在寻找的颜色方案,这还不够因为是在别处。通常,如果它已通过插件管理器安装在另一个目录中。在这种情况下,唯一可靠的方法是检查 vim'runtimepath '
(又名'rtp'
)。因此globpath()
。请注意,:colorscheme name
命令在{rtp}/colors/{name}.vim
中搜索。Using
:colorscheme
in a try-catch as Randy has done may be enough if you just want to load it if it exists and do something else otherwise. If you are not interested in the else part, a simple:silent! colorscheme
is enough.Otherwise,
globpath()
is the way to go. You may, then, check each path returned withfilereadable()
if you really wish to.EDIT:
filereadable($HOME.'/.vim/colors/'.name.'.vim')
may seem simple and it's definitively attractive, but this is not enough if the colorscheme we're looking for is elsewhere. Typically if it has been installed in another directory thanks to a plugin manager. In that case the only reliable way is to check in the vim'runtimepath'
(a.k.a.'rtp'
). Henceglobpath()
. Note that:colorscheme name
command searches in{rtp}/colors/{name}.vim
.@eckes 答案的替代方法是尝试加载颜色方案并处理错误(如果不存在):
An alternative to @eckes answer would be to try to load the colorscheme and deal with the error if it doesn't exist:
您可以使用
fileread
函数检查颜色方案(例如schemename
)是否存在:在~/vimfiles/colors
下检查一次(Win32,对于 Unix,使用~/.vim/colors/
),然后在$VIMRUNTIME/colors/
下:You could use the
filereadable
function to check if a color scheme (e.g.schemename
) exists: check once under~/vimfiles/colors
(Win32, for Unix use~/.vim/colors/
) and once under$VIMRUNTIME/colors/
:我的方法类似,
这比硬编码整个路径更强大一点。
My method is similar,
This is a little more robust than hardcoding the entire path.
通常我会使用最喜欢的
colorscheme
,如果我最喜欢的颜色方案不可用,我会进行后备。嵌套的try
将使这项工作有效:如果两个
colorscheme
都不可用,则加载默认的(无论您的系统上发生什么情况)。如果一种或两种颜色方案不可用,则不会显示错误。将您喜欢的颜色方案
放在第一位。此外,不带参数的
catch
会捕获任何错误。如果您正在处理给出不同错误消息的不同区域设置,这会很方便。Normally I use a favorite
colorscheme
with a fallback if my favorite is not available. A nestedtry
will make this work:If neither
colorscheme
is available, the default one is loaded (whatever that happens to be on your system). No errors are shown if one or both of the colorschemes are not available. Put your preferredcolorscheme
first.Also,
catch
with no arguments catches any error. This is handy if you are dealing with different locales that give different error messages.这是我在
.vimrc
文件中的内容。基本上它会检查机器上是否存在我喜欢的配色方案。如果是,它将选择它并应用它所需的所有设置。否则它会选择 vim 附带的合适的配色方案。
通过查看其他答案,我的答案与 @user427390 答案共享一部分,并且它有一个额外的 else 条件。
以下链接对我编写自己的
.vimrc
和 vim 相关文件的脚本有很大帮助:http://learnvimscriptthehardway.stevelosh.com/
This is wat I have in my
.vimrc
file.basically it does check to see if the color scheme I like exists on the machine or not. If it does, it will select it and apply all the setting necessary for it. Otherwise it choose a suitable color scheme that is shipped with vim.
By looking at other answers, my answer shares bit part with @user427390 answer and it has an additional else condition.
The following link has helped me a lot in scripting my own
.vimrc
and vim related files:http://learnvimscriptthehardway.stevelosh.com/