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