2012-08-02 59 views
25

我一直在寻找它的很长一段时间。vim脚本编写,如果vim版本<7.3

我想添加一行到一个vim插件文件,如果在不支持的vim版本上运行,它会禁用它。

我从某处记得它去类似的东西:

if version > 730 
    "plugin code goes here 
endif 

但失败。

+0

你为什么不去做一些事情是这样的: 如果版本<730 完成 ENDIF 否则 - 你添加插件代码。 (复制自其中一个VIM文件:) – hari 2012-08-02 09:56:51

回答

41

版本控制方案不同; Vim 7.3是703,而不是730。另外,为了清楚起见,我会推荐使用v:version(这是一个特殊的Vim变量)。

通常,检查功能的可用性(例如exists('+relativenumber'))比测试引入功能的Vim版本更好,因为Vim可以使用不同的功能进行自定义编译。

最后,插件通常做门卫的其他方式:

if v:version < 703 
    finish 
endif 
" Plugin goes here. 

它是一个很好的做法,这与包容后卫组合。这使得个人用户禁用(系统级)安装的插件:

" Avoid installing twice or when in unsupported Vim version. 
if exists('g:loaded_pluginname') || (v:version < 700) 
    finish 
endif 
let g:loaded_pluginname = 1 
+1

在我的情况下(以及为什么我寻找这个问题和答案),似乎'formatoptions'的'j'选项已添加到7.4中,我的.vimrc需要现在跨越这个边界工作。 (Srsly Apple,仍然出货7.3?) – 2015-12-02 08:17:32

+0

如何显示v:版本值?我试过'set v:version?',但是失败了 – 2018-02-02 05:01:10

+1

@DanielYCLin':set'用于Vim _options_;这是一个特殊的内置_variable_。您可以通过':echo v:version'(或':echomsg')显示值(与任何其他Vimscript表达式一样)。 – 2018-02-02 13:07:32