Как включить менеджер плагинов без ~/.vimrc

После использования vim в течение некоторого времени мой ~/.vim/, начиная с моих первых экспериментов с vim, со временем стал очень грязным. Вот я и подумал, пора бы навести порядок и начать с менеджера плагинов с чистой конфигурацией.

Поскольку я делюсь своей конфигурацией на нескольких машинах, я обычно управляю своим путем ~/.vim/ с помощью репозитория git. Чтобы избежать большого .vimrc, я поместил свою конфигурацию в ~/.vim/plugin/. Это позволило мне сохранить всю мою общую конфигурацию в этой папке и использовать ~/.vimrc только для конфигурации, зависящей от машины.

Начиная с VAM поверх NeoBundle, а теперь и с Vundle, у меня всегда одна и та же проблема. Если я добавляю нужную конфигурацию под ~/.vim/plugin/pluginmanager.vim вместо ~/.vimrc, установленные плагины не загружаются или загружаются только частично. Команда :echo &rtp перечисляет правильные пакеты, но :scriptnames не включает установленные плагины. Если я выполню mv ~/.vim/plugin/pluginmanager.vim ~/.vimrc, все будет работать как положено.

Может ли кто-нибудь объяснить это поведение и, возможно, предложить решение?

Мой pluginmanager.vim выглядит так:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'
Plugin 'bling/vim-airline'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

Моя установка vim - версия 7.4.52.


person Trendfischer    schedule 17.03.2015    source источник
comment
Вы тоже не хотите использовать ~/.vim/vimrc?   -  person FDinoff    schedule 18.03.2015
comment
Спасибо, не знал про ~/.vim/vimrc. Кажется, лучшее решение. Думаю, мне нужно обновить заголовок моего вопроса.   -  person Trendfischer    schedule 18.03.2015


Ответы (2)


Проблема в порядке запуска. После того, как ваш ~/.vimrc будет выполнен (в первую очередь при запуске), Vim выполняет что-то вроде :runtime! plugin/*.vim для загрузки плагинов. Поскольку ваш диспетчер подключаемых модулей вызывается только после этого, изменения в 'runtimepath' больше не доходят до запускающей команды :runtime, и подключаемые модули не загружаются.

Есть много обходных путей:

  • Переместите свой сценарий в ~/.vim/pluginmanager.vim и явно :runtime pluginmanager.vim из (каждой копии) вашего ~/.vimrc.
  • Перезапустить через :runtime! plugin/*.vim.

Но я согласен с @brettanomyces в том, что лучшим решением было бы использовать ~/.vimrc по назначению и вместо этого поместить специфичную для системы конфигурацию в другой скрипт.

person Ingo Karkat    schedule 18.03.2015
comment
Да, это объясняет поведение. Спасибо за понимание. Но в качестве решения я буду использовать ~/.vim/vimrc, как предложил @FDinoff в своем комментарии. Это совместимо с подходом системы контроля версий. - person Trendfischer; 18.03.2015
comment
Да, это хорошее решение, если у вас есть текущие версии Vim на всех системах, так как это относительно недавняя функция. - person Ingo Karkat; 18.03.2015
comment
Ах, хороший момент. Я проверил версии. Команда :version оказалась полезной, она перечисляет, какие файлы vimrc используются. - person Trendfischer; 19.03.2015

Я бы рекомендовал использовать файл ~/.vimrc для общей конфигурации и иметь другой файл, такой как ~/.vimrc.local, с конфигурацией, специфичной для вашей машины. Вы можете получить ~/.vimrc.local, добавив следующее в файл ~/.vimrc.

if filereadable(glob("~/.vimrc.local")) 
    source ~/.vimrc.local
endif

Источник: http://blog.sanctum.geek.nz/local-vimrc-files/


Чтобы решить вашу проблему, попробуйте добавить runtime! bundle/**/*.vim в конец файла pluginmanager.vim.

Смотрите также: :help init

person Brett Y    schedule 17.03.2015
comment
Спасибо за ответ. Поиск других файлов — хороший способ и законное решение. Но я намерен избегать .vimrc. Без менеджера плагинов я не пропустил это, и мои различные конфигурации лучше организованы в каталоге плагинов. Но это могут быть какие-то индивидуальные предпочтения. - person Trendfischer; 18.03.2015
comment
@Trendfischer: Просто создайте символическую ссылку ~/.vimrc на что-нибудь в вашем репозитории Git. - person Kevin; 18.03.2015