Another VIM Addon Manager

18 September 2012 #vim#ruby

С недавнего времени я вернулся к использованию текстового редактора vim. И передо мной встала проблема в установке и организации дополнений. Разумеется, что класическую систему я отверг сразу, пробовал использовать pathogen, чуть позже попробовал vundle. Однако меня постоянно что-то не устраивало.

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

В случае с vundle мой файл конфигурации vimrc довольно сильно разросся. Но помимо этого я попробовал использовать свой репозиторий с чистого листа, как будто устанавливал vim на новую машину и столкнулся с тем, что получил массу ошибок при запуске vim. Понимаю, что это временное явление, но ситуация мне не понравилась.

В итоге я решил написать свой собственный менеджер. В качестве языка выбрал ruby, и организовал сам скрипт в виде Rakefile.

Готовый скрипт разместил на сервере Github в репозитории another-vim-addons-manager.

Основной принцип работы заключается в организации yaml-файла plugins.yaml, который автоматически создается в текущей директории после запуска Rakefile. По умолчанию прописывается только один адрес репозитория расширения vim-pathogen, именно на нем основана работа менеджера.

Для добавления нового расширения в редактор vim достаточно указать адрес git-репозитория данного расширений, а для удаления – соответственно, удалить описание данного репозитория из yaml-файла. После чего достаточно вызвать команду rake.

Кстати, команда rake может принимать один из следующих аргументов:

$ rake -T

rake clean    # Remove excess plugins in bundle directory
rake default  # Install new and remove excess plugins in bundle directory
rake install  # Install new plugins in bundle directory
rake list     # List plugins in bundle directory
rake update   # Update plugins in bundle directory

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

Минимально необходимый файл vimrc располагается в репозитории. Он содержит в себе строки для активизации расширения vim-pathogen.

runtime bundle/vim-pathogen/autoload/pathogen.vim

call pathogen#infect()
syntax on
filetype plugin indent on

При необходимости, можно добавлять свои опции в конце файла vimrc.

Преимущества данного способа организации расширений заключается в том, что достаточно хранить только файл plugins.yaml, чтобы затем очень быстро восстановить все необходимые расширения. С помощью данного менеджера очень легко удалять расширения, а так же обновлять их. Достаточно только изменить файл конфигурации и затем использовать команду rake с соответствующим параметром.

Установка

Для установки достаточно клонировать данный репозиторий в директорию, где должны располагаться файлы конфигурации VIM, обычно это директория ~/.vim:

$ git clone https://github.com/Juev/another-vim-addon-manager.git ~/.vim

После чего достаточно перейти в указанную директорию и выполнить команду:

~/.vim $ rake

Будет установлено расширение vim-pathogen, которое требуется для работы менеджера. Затем дополняем файл plugins.yaml, прописывая адреса репозиториев требуемых расширений, к примеру:

---
- https://github.com/tpope/vim-pathogen
- https://github.com/scrooloose/nerdtree
- https://github.com/vim-scripts/L9
- https://github.com/mileszs/ack.vim
- https://github.com/tpope/vim-rails
- https://github.com/vim-ruby/vim-ruby

После очередного запуска команды rake будет произведена установка этих расширений.

На мой взгляд, все довольно просто и удобно. Однако если заметите ошибки или у вас будут какие-нибудь замечания, обращайтесь в электронную почту или непосредственно в раздел Issues данного репозитория на сервере Github.