# Another VIM Addon Manager

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

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

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

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

Готовый скрипт разместил на сервере Github в репозитории [another-vim-addons-manager](https://github.com/Juev/another-vim-addon-manager "Juev/another-vim-addon-manager -- Github").

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

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

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

```shell
$ 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`.

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

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

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

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

## Установка

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

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

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

```shell
~/.vim $ rake
```

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

```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.

