“忽略”;“未知选项”;vimrc中的错误
我在安装了Vim 7.2和7.3的机器之间携带相同的.vimrc。每次我打开文件时,配备Vim 7.2的机器都会抱怨我的7.3特定选项:“忽略”;“未知选项”;vimrc中的错误,vim,Vim,我在安装了Vim 7.2和7.3的机器之间携带相同的.vimrc。每次我打开文件时,配备Vim 7.2的机器都会抱怨我的7.3特定选项: Error detected while processing /home/spiffytech/.vimrc: line 72: E518: Unknown option: rnu line 73: E518: Unknown option: undofile line 74: E518: Unknown option: undodir=/tmp
Error detected while processing /home/spiffytech/.vimrc:
line 72:
E518: Unknown option: rnu
line 73:
E518: Unknown option: undofile
line 74:
E518: Unknown option: undodir=/tmp
line 75:
E518: Unknown option: cryptmethod=blowfish
Press ENTER or type command to continue
如何使Vim忽略这些错误,并且在打开文件时不提示我按enter键?在you.vimrc中,可以针对正在执行的Vim版本进行测试 请参见
help v:version
if v:version >= 703
"do something
set rnu
set undofile
...
endif
703对应于Vim 7.3(这不是真正直观的…将新选项包装在:
if version >= 703
set rnu ...
endif
有关要使用的版本号的更多信息,请查看v:version
的帮助:
*v:version* *version-variable*
v:version Version number of Vim: Major version number times 100 plus
minor version number. Version 5.0 is 500. Version 5.1 (5.01)
is 501. Read-only. "version" also works, for backwards
compatibility.
Use |has()| to check if a certain patch was included, e.g.: >
if has("patch123")
< Note that patch numbers are specific to the version, thus both
version 5.0 and 5.1 may have a patch 123, but these are
completely different.
*v:version**version变量*
v:Vim版本号:主版本号乘以100加号
次要版本号。版本5.0是500。版本5.1(5.01)
是501。只读。“版本”也适用于向后
兼容性。
使用| has()|检查是否包含某个修补程序,例如:>
如果有(“补丁123”)
<请注意,修补程序编号是特定于版本的,因此
版本5.0和5.1可能有一个补丁123,但它们是
完全不同。
我想说这个问题没有得到回答。考虑在计算机A上创建的一个Seist.vim,它具有较晚的VIM版本。在源代码管理中,当另一台计算机B尝试打开Session.vim时,会触发错误。对于本应是自动化流程的内容,必须手动包装版本号是没有意义的。在这种情况下,新版本在保存会话时必须自动将新命令包装在版本号中,这是7.3没有做到的。可能值得对实际支持的功能而不是版本进行更细粒度的检查
例如:
您可以使用
silent!…忽略任何错误代码>,就像无声!set undofile
有时选项是合法的,但在当前环境中不可用。例如:
$ vi
Error detected while processing /home/username/.vimrc:
line 9:
Unknown option: indentexpr=
要测试选项是否存在,并在不可用时避免错误,请执行以下操作:
if exists("&indentexpr")
:set indentexpr=
endif
这很有效。一定要小心设置版本号——我花了一段时间仔细阅读,才发现它不是简单的“version*100”是的,这可能很棘手,但你会习惯它。我宁愿用字符串连接的方式来描述它,而不是做数学运算。请注意,这在许多其他地方都有使用。例如,Perl使用了与之类似的语法。你必须使用5.010
使用perl5.10
中的功能,而不是5.1
。这就是为什么他们使用它不是小数点意义上的,否则会产生一些歧义。测试特定功能比测试版本更好,因为特定版本可以在没有您正在寻找的功能的情况下编译。测试功能要好得多。Fedora 21的默认vim是7.4,但编译时没有折叠,这是在6.0中添加的。我们肯定应该检查所需的功能,而不是假设特定的版本号就足够了。这不会对版本号进行篡改。
if exists("&indentexpr")
:set indentexpr=
endif