Управление плагинами в VIM Vim 09.02.2011

Каждый раз, когда выходит обновление плагина для vim'a приходится вручную проделывать лишние телодвижения: зачистить все папки относящиеся к этому расширению (а, особенно размазан xptemplate), выкачать новую версию, разложить содержимое архива по структуре каталогов (autoload, plugin, doc, etc.).

Было бы куда удобней, если за это все отвечал какой-то менеджер пакетов/обновлений. Об одном из таких расширений и пойдет речь в этом посте, имя ему - pathogen. По большому счету это даже не менеджер пакетов/обновлений, а простой подключатель указанных папок в runtimepath vim'a, но если все правильно приготовить то получится очень даже 'вкусно'. Главная фишка pathogen - заглянуть в указанную папку, взять все подпапки и добавить их в vim'овский PATH. А в этих подпапках уже лежат плагины со своей структурой каталогов, например путь для плагина command-t будет такой ~/.vim/bundle/command-t. Удаление плагина равноценно удалению папки с именем плагина.

Перейдем от теории к практике.

Начнем все с чистого листа

mv ~/.vim ~/vim_old

Берем последнюю версию pathogen и кладем в ~/.vim/autoload

git clone https://github.com/tpope/vim-pathogen.git ~/.vim/

Создадим папку ~/.vim/bundle, в которой будут жить плагины

mkdir ~/.vim/bundle

В эту папку начинаем закидывать используемые плагины, предварительно создав папку с именем плагина. Но советую на этом этапе не спешить и дочитать до места где все это сделает скрипт.

В ~/.vimrc добавляем две команды, одна для запуска pathogen, вторая для автогенерации документации новых плагинов

call pathogen#runtime_append_all_bundles()
call pathogen#helptags()

На этом этапе все плагины живут в отдельных папках, что облегчает их управление и вносит порядок в структуру каталогов. Теперь можно перенести из ~/vim_old папки colors, spell, syntax.

Осталось дело за малым, автоматизировать обновление плагинов. Для этого понадобится pathogenized, который умеет парсить файл со списком используемых плагинов и обновлять их из git-репозитария. Огромный список плагинов и их git-репозитариев есть на сайте vim-scripts.org, 98% используемых мной плагинов есть в этом списке, остальные 2% можно найти в google, хотя не исключено что меинтейнеры vim-scripts.org могли добавить новый плагин кода вы читаете эти строчки.

Pathogenized складирует git-репозитарии плагинов в ~/.vim/bundle/ и умеет их обновлять по команде. Для удаления плагина надо вручную удалить из списка и зачистить папку из ~/.vim/bundle/.

В оригинале pathogenized написан на ruby, а это означает, что придется ставить ruby и некоторые сопутствующие пакеты. Но это особо не проблема если вы программист на ruby или ставили другие плагины, которые требуют ruby (например, command-t).

В комментариях dimas поделился аналогом pathogenized на python, брать тут.

Если продолжать вариант с ruby, то ruby1.8 под Ubuntu ставится так

sudo apt-get install ruby1.8 ruby1.8-dev rubygems1.8 rake

Установим pathogenized

sudo gem install rubyzip archive-tar-minitar
git clone git@github.com:kljohann/pathogenized.git ~/.vim
cp ~/.vim/plugins.example.idnt ~/.vim/plugins.idnt

В plugins.idnt хранятся плагины, за обновлением которых надо следить. Мой plugins.idnt.

Для запуска процесса обновлений надо выполнить этот скрипт

~/.vim/bin/update_plugins

Список загруженных плагинов можно просмотреть с помощью

:scriptnames

Другие варианты управления плагинами

Выше описанный способ вполне приемлем, но не идеален. У каждого из опробованных способов обновлений есть свои плюсы и минусы. Кто-то умеет искать по своей базе, кто-то умеет складывать куда надо, кто-то умеет почти автоматически следить за обновлениями и т.д.

Дополнительное чтиво

Цитата
Богат тот, у кого потребности укладываются в возможности.
Илья Шевелев
Категории
Архив