Я использую мой .vimrc
в ряде различных машин, которые у всех есть существенно отличающиеся версии энергии. Большинство версий загружается прекрасный, но один из них имеет, сообщает этот (сфабрикованный) список ошибок на запуске:
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
, поскольку это приблизительно 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>
if exists('*pathogen#infect')
" The function pathogen#infect() exists
else
" The function pathogen#infect() does not exist
endif
Использовать :help exists()
для большей информации. В дополнение к переменным, exists()
также может протестировать на &
опции, *
функции, :
команды, #
автокоманды события.