Найти в Дзене
Vim

VimScript 44 [ макет плагина с Pathogen ]

| ч43 плагин, что где лежит | Содержание | ч45 Определение типа файла | То расположение файлов что мы рассматривали раньше имеет смысл только если вы этот плагин делаете для себя. Но если вы планируете им делиться то это может стать кошмаром для пользователей. Да и если вам придется использовать плагины которые написаны другими людьми, это очень быстро превратиться в беспорядок. В прошлом, когда мы хотели использовать плагин, который написал кто-то другой, мы загружали файлы и размещали их один за другим в соответствующие каталоги. Мы также могли использовать zip или tar что бы они сделали это размещение для нас. С таким подходом у нас есть ряд существенных проблем: Люди придумали несколько хаков, чтобы попытаться упростить задачу, например. Тим Поуп создал замечательный плагин Pathogen, который упрощает управление плагинами, если авторы плагинов структурируют их определенным образом. Давайте быстро посмотрим, как работает Pathogen и что нам нужно сделать, чтобы сделать наш плагин сов
Оглавление

| ч43 плагин, что где лежит | Содержание | ч45 Определение типа файла |

То расположение файлов что мы рассматривали раньше имеет смысл только если вы этот плагин делаете для себя. Но если вы планируете им делиться то это может стать кошмаром для пользователей. Да и если вам придется использовать плагины которые написаны другими людьми, это очень быстро превратиться в беспорядок.

В прошлом, когда мы хотели использовать плагин, который написал кто-то другой, мы загружали файлы и размещали их один за другим в соответствующие каталоги. Мы также могли использовать zip или tar что бы они сделали это размещение для нас.

С таким подходом у нас есть ряд существенных проблем:

  • Что произойдет, когда вы захотите обновить плагин? Вы можете перезаписать старые файлы, но как вы узнаете, удалил ли автор файл, который вам теперь нужно удалить вручную?
  • Что делать, если у двух плагинов есть файл с одинаковым именем (например utils.vim, или что-то общее в этом роде)? Иногда вы можете просто переименовать его, но если он находится в autoload/ или в другом каталоге, где имена имеют значение, вы должны отредактировать плагин самостоятельно. Не весело.

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

Давайте быстро посмотрим, как работает Pathogen и что нам нужно сделать, чтобы сделать наш плагин совместимым с ним.

Runtimepath

Когда Vim ищет файлы в определенном каталоге, например syntax/, он не просто ищет их в одном месте. Как PATH в системах Linux / Unix / BSD, у Vim есть runtimepath настройка, которая указывает, где искать файлы для загрузки.

Создайте каталог colors на своем рабочем столе. Создайте файл в этом каталоге с именем mycolor.vim (вы можете оставить его пустым для этой демонстрации). Откройте Vim и запустите эту команду:

:color mycolor

Vim отобразит ошибку, потому что он не знает, как искать файлы на вашем рабочем столе . Теперь выполните эту команду:

:set runtimepath=/Users/ваше_имя/Desktop

Конечно, вам нужно будет изменить путь, чтобы он соответствовал пути вашего собственного рабочего стола. Теперь попробуйте команду color еще раз:

:color mycolor

На этот раз Vim не выдает ошибку, потому что он смог найти mycolor.vim файл. Поскольку файл был пустым, он фактически ничего не делал, но мы знаем, что он был найден, потому что Vim не выдал ошибку

Pathogen

Плагин Pathogen автоматически добавляет пути к вашему runtimepath, когда вы загружаете Vim. Все внутренние каталоги ~/.vim/bundle/ будут добавлены в runtimepath.

Это означает, что каждый каталог внутри bundle/ должен содержать некоторые или все стандартные каталоги плагинов Vim, такие как colors/ и syntax/. Теперь Vim может загружать файлы из каждого из этих каталогов, что упрощает хранение файлов каждого плагина в отдельном каталоге

Это делает обновление плагинов легким. Вы можете просто полностью удалить каталог старого плагина и заменить его новой версией. Если вы держите свой ~/.vim каталог под контролем версий (а вы должны), вы можете использовать вложенные репозитории Mercurial или подмодули Git, чтобы напрямую проверять репозитории каждого плагина ~/.vim/bundle/, а затем обновлять его с помощью простого [ hg pull; hg update ] или [ git pull origin master ].

Совместимость с Pathogen

Когда мы пишем наш плагин Potion, мы хотим, чтобы наши пользователи использовали его с Pathogen. Сделать это просто: мы просто помещаем наши файлы в соответствующие каталоги внутри репозитория плагина!

Репозиторий нашего плагина будет выглядеть следующим образом:

potion/
________README
________LICENSE
________doc/
_____________potion.txt
________ftdetect/
_____________potion.vim
________ftplugin/
_____________potion.vim
________syntax/
_____________potion.vim
... etc ...

Мы можем разместить это на GitHub или Bitbucket, и пользователи могут просто клонировать его, в bundle/ и все, это будет просто работать!

Упражнения

Установите Pathogen, если вы еще этого не сделали.

Создайте репозиторий в Mercurial или Git для вашего плагина, назовите го potion. Вы можете поместить его куда угодно и создать символическую ссылку на ~/.vim/bundle/potion/ него или просто вставить его напрямую в ~/.vim/bundle/potion/.

Создайте README и LICENSE файлы в репозитории и зафиксируйте их.

Залейте репозиторий на Bitbucket или GitHub.

Прочитать :help runtimepath.

| ч43 плагин, что где лежит | Содержание | ч45 Определение типа файла |