我将 vimrc 带到我工作的所有机器上,它自然包含旧 vi 中不存在的选项。
如果我不小心在 vi 不是 vim 的别名和/或未安装 vim 的机器上启动了 vi 会话,vi 会读取 vimrc 并抛出一堆烦人的错误,让我知道该选项不支持。
我知道我总是可以输入“vim”而不是“vi”并将 EDITOR 变量设置为 vim(对于 visudo 等......),但是我可以在 vimrc 的顶部添加一行退出脚本如果文件被vi读取,那么早吗?
如果 vi 实际上不是 vim 的链接,则不应读取.vimrc,而应读取.exrc。它正在读取 .vimrc 的事实表明它实际上是 vim 的早期版本。如果是这种情况,您可以使用 vim "if" 构造来支持新功能,如下所示:
:if version >= 500
: version-5-specific-commands
:endif
类型:
:help if
在 vim 中获取更多信息时。
如果您想更具体地检查您的检查,您也可以检查个别功能。
我的 .vimrc 中有这个:
if has("eval")
" Syntax stuff
let java_highlight_all=1
endif
if has("autocmd")
" Buffers
autocmd BufEnter * cd %:p:h
endif
非 vim 不读取 .vimrc,它正在寻找 .exrc。您可以使用 "if version >= 500" 检测旧版本的 vim
"vi" 读取 vimrc 因为它肯定是用名称 "vi" 编译的 Vim。并且它可能编译为“非常兼容 Vi”,因此您可以尝试检查功能“兼容”以检测“vi”:
if !has("compatible")
let g:loaded_matchparen=1
syntax off
endif