В народе широко распространено мнение, что zypper, запущенный из zsh‘а, лишает последний самого главного достоинства — настраиваемого в безграничных пределах автодополнения. Будучи укорён этим в одном из обсуждений на Джуйке, провёл небольшое расследование. И теперь со всей ответственностью заявляю: работает.

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

Что для этого нужно сделать? Две вещи. Первая: озаботиться, чтобы в каталоге /usr/share/zsh/4.3.17/functions/ присутствовал бы файл _zypper. По умолчанию в openSUSE 12.2 он есть. Если не окажется — его нетрудно разыскать в сети, причём в разных вариантах. Мне встретились такой и вот такой. Различия между ними, выявляемые утилитой kdiff (о ней рассчитываю скоро написать), минимальны. Как, впрочем, и с «родным» файликом из комплекта openSUSE, и почти исключительно косметические. У меня, после дальнейших действий, сработали все.

А дальнейшие действия… если вы подумали, что это какая-либо правка конфигов, то окажетесь не правы — при условии, что ~/.zshrc у вас тот, что в полуавтоматическом режиме генерируется при первом запуске этой оболочки как login shell. А потребуется от вас только обрести права суперпользователя одним из трёх способов:

  • авторизоваться root’ом в «голой» консоли;
  • получить права root’а в консоли или терминальном окне пользовательского сеанса посредством su -;
  • проделать то же и там же посредством sudo -i, что эквивалентно.

Подчёркиваю — именно с - и -i, соответственно: через просто su или sudo автодополнение работать не будет. Как не будет его и при запуске от лица обычного пользователя — в openSUSE по умолчанию это требует такой формы:

$ /usr/sbin/zypper

Последнее вступает в противоречие с советом, данным в одной из шпаргалок по zypper’у. Но тут уж ничего не поделаешь, приходится выбирать — ускорение или автодополнение.

Нельзя исключить того, что у вас не сработает ни один из приведённых вариантов функции _zypper. Тут я вижу два выхода:

  1. поискать более подходящий — повторяю, их в сети что грязи, я схватил те, что плохо лежали (то есть хорошо — в топе Гошиной выдачи);
  2. поправить означенную функцию самостоятельно.

Если соответствующего умения нет (как нет его у автора этих строк) — при желании его можно попробовать приобрести, ознакомившись с этим материалом. А там, глядишь, может, кто из моих читателей допишет (или перепишет) эту функцию так, чтобы она умела дополнять также пути и имена пакетов.


К содержанию | Zsh-шпаргалки