me.neoascetic

Antigen - vundle-like менеджер плагинов для zsh

Небольшой обзор antigen, vundle-like менеджера управления плагинами (большей частью из oh-my-zsh, хотя это не важно) для zsh, который я имел радость найти.

Когда я только начал пользоваться zsh (из-за каких преимуществ - можете поискать в Гугле) я набрёл на замечательный проект oh-my-zsh - сборник хаков, плагинов, тем и прочих удобняшек. Тем - свыше восьмидесяти, плагины - самые различные, в том числе и system-depended (для aptitude, например). Устанавливается и настраивается все тоже весьма удобно - путём редактирования определённых переменных в .zshrc. В общем, я оценил этот проект по достоинству, когда начал пользоваться.

Но open source на то и open, - и однажды я решил расширить понравившуюся тему поддержкой virtualenv. Сделал несложные изменения, открыл “Pull Requests” проекта… и обомлел. Более трёхсот реквестов, более пятисот issue! Большая часть - запросы на добавление собственной темы, часто даже с похожими заголовками типа “Just my own theme”. Это меня опечалило. Я, конечно, послал pull, но мерджа не дождался и после пары месяцев. Потом появилась идея плагина

Начал искать. Ну как искать. Просто ввёл в поиске на github однажды “oh-my-zsh”, а он выдал связанные с этим проектом репозитории, среди которых оказался и antigen. Был ещё некий zcm, но в antigen меня подкупило то, что он старается быть похожим на менеджер плагинов для Vim vundle, которым я пользуюсь и доволен.

Суть и первого, и второго в том, что мы с помощью неких команд указываем путь к репозиторию нужного плагина (при чем для github-реп он может быть в сокращенном варианте, вида username/repo), а менеджер сам клонирует, делает нужные вещи для установки и предоставляет различные хелперы типа “обновить все и сделать красиво”.

Мотивация у автора antigen - упростить управление плагинами. В ридми он восхищается самоотверженностью Robby Russell в разгребании тонн пулл реквестов и issues, и указывает, что уже есть было несколько запросов на упрощение oh-my-zsh, но, увы, никакого прогресса не видно.


Все, что нужно сделать, чтобы использовать antigen - выполнить source antigen.zsh, который можно взять на сайте проекта. Я, например, подключил его к своим dotfiles как субмодуль, чтобы легко подтягивать актуальную версию.

По умолчанию (т. е. можно изменить), в качестве основного используется главный реп oh-my-zsh, ведь там подавляющее большинство полезных плагинов, но это уже даёт возможность как-то децентрализовать и упростить управление. Основные доступные команды - antigen-bundle (указываем путь к плагину), antigen-bundles (указываем плагины пачкой) и antigen-theme (указываем название темы, пока что поддерживаются только из главного репа; свою, впрочем, можно подключить, просто сделав её source или как плагин, с указанием аргумента --btype=theme).

К примеру, вот как выглядит подключение плагинов у меня в .zshrc:

# подключаем antigen из субмодуля
source ".zsh/antigen/antigen.zsh"

# либы из директории "lib" репа, выбранного "основным"
# на мой взгляд, указывать в качестве основного репа форк нужно только если
# что-то поменяли в этой директории
antigen-lib

# подключение плагинов - пачкой
antigen-bundles << EOF
pip
vi-mode
debian
python
vundle
git
ssh-agent
virtualenvwrapper

zsh-users/zsh-syntax-highlighting
EOF
# обратите внимание на плагин "zsh-syntax-highlighting", довольно забавный
# подсвечивает синтаксис набираемых в консоли команд прямо в процессе набора

# указываем тему
antigen-theme bira

# применяем
antigen-apply

Вот и все. Когда потребуется обновить проект, можно воспользоваться командой antigen-update, который пробежится по имеющимся репам и сделает git pull origin master.