我.vimrc
在许多不同的机器上使用我的 vim,这些机器的 vim 版本都有很大差异。大多数版本都可以正常启动,但其中一个版本在启动时报告了以下(篡改过的)错误列表:
Error detected while processing ~/.vimrc:
Undefined variable: pathogen
Invalid expression: pathogen#infect()
Invalid :syntax subcommand: enable
Unknown function: executable
Invalid expression: executable('xclip')
:else without :if: else
:endif without :if: endif
Invalid argument: indent on
Invalid argument: plugin on
Invalid argument: nrformats=alpha,hex,octal
Illegal arguments: fromstart
Not an editor command: colorscheme zobean
Unknown option: foldenable
Unknown option: foldcolumn=0
Unknown option: cursorline
Unknown option: winminwidth=0
Ambiguous mapping, conflicts with "^V<silent>"
Ambiguous mapping, conflicts with "^V<leader>"
Ambiguous mapping, conflicts with "j"
我知道我可以使用来测试鼠标支持是否已启用。我是否可以对其他命令(如)以及通常缺少的设置和选项if has('mouse')
进行类似的测试?pathogen
请注意,我没有权限在所有这些机器上安装程序,因此安装最新版本vim
不是一个有效的选项。
我打算只为所有机器维护一个.vimrc
,以便根据可用的情况适当地定制选项。
附录:vimrc内容
我不会包含我的整个文件.vimrc
,因为它大约有 250 行长,但下面是导致上面列出的每个错误的代表性行和部分:
execute pathogen#infect()
syntax enable
if has('win32')
...
elseif executable('xclip')
...
else
...
endif
filetype indent on
filetype plugin on
set nrformats=alpha,hex,octal
syn sync fromstart
colorscheme zobean
set foldenable foldnestmax=5 foldmethod=indent
set foldcolumn=0
set cursorline
set winminwidth=0
vnoremap < <gv
nnoremap <leader>~ vwb<esc>~
vnoremap jk <esc>
答案1
if exists('*pathogen#infect')
" The function pathogen#infect() exists
else
" The function pathogen#infect() does not exist
endif
用于:help exists()
获取更多信息。除了变量之外,exists()
还可以测试&
选项、*
函数、:
命令、#
事件自动命令。