Потому что vim всегда читает vimrc перед плагинами.Эта последовательность загрузки имеет смысл, потому что в этом случае вы можете установить параметры плагина в vimrc.Его нельзя переопределить, но вы можете использовать zipPlugin (с :source /usr/share/vim/vim73/plugin/zipPlugin.vim
или :runtime plugin/zipPlugin.vim
) из vimrc.AFAIK это не помешает плагину загружаться во второй раз, но, так как этот плагин использует охрану, он не будет переходить к линии сброса cpo при получении во второй раз.
Обратите внимание, что есливаш zipPlugin.vim
идентичен моему, поэтому он не является источником проблемы: если вы посмотрите на его код, то увидите, что он сохраняет настройки cpoptions
, а затем восстанавливает их.Так как другие плагины, распространяемые с vim, должны делать то же самое или вообще не касаться cpoptions
, вы можете забыть приведенную выше рекомендацию.Я бы посоветовал сначала посмотреть, что строка set nocompatible
(или set nocp
), если она есть, является первой строкой, присутствующей в vimrc.Помните, что установка этого параметра приводит к тому, что многие другие параметры сбрасываются к значениям по умолчанию (включая cpoptions
), и именно поэтому он должен идти перед любыми другими параметрами модификации строки.
Обновление: Теперь я вижу, что вы предоставили ссылку на vimrc, и у него нет вышеуказанной проблемы.Попробуйте проверить verbose set compatible?
, затем попробуйте запустить vim с помощью следующей команды:
vim --cmd 'let g:sourced_files=[] | autocmd SourcePre * if !empty(g:sourced_files) && stridx(&cpo, "$")==-1 | echomsg "cpo does not contain dollar sign after loading ".g:sourced_files[-1] | set cpo+=$ | endif | let g:sourced_files+=[expand("<amatch>")]'
У вас будут некоторые ложные срабатывания: первый загруженный vimrc (/etc/vim/vimrc
): потому что cpo
не был установленлюбые плагины загружаются как
if exists("loaded_thlnk")
finish
endif
let loaded_thlnk = 1
let s:save_cpo = &cpo
set cpo&vim
" (This is to allow installation of thlnk.vim with just :runtime plugin/thlnk.vim
" without leaving vim after having thrown all files into a plugin directory :)
runtime! plugin/thlnkuri.vim
runtime! plugin/thlnkarr.vim
runtime! plugin/thlnkscm.vim
: здесь cpo сбрасывается перед загрузкой плагинов, но в конце идет
let &cpo = s:save_cpo
, поэтому это действительно безопасно.В моей системе есть только ложные срабатывания: хотя cpo сохраняется и восстанавливается многими плагинами, никакие плагины не забывают восстановить его или сделать что-то еще.