Продолжение статей про zsh, здесь будет приведен обзор автодополнения, одной
из основных фич, которая существенно выделяет zsh на фоне bash и других
оболочек. Кто-то может сказать что fish не лучше, но он совершенно не
настраиваемый и далеко не такой гибкий. Причем эту ситуацию разработчики
изменять не планируют.
Автокомплит основан, большей частью на конфиге zsh из GRML.
Почти весь представляет собой большую функцию mycompletion. Просто потому что
я почему-то люблю представлять скрипты в виде функций.
Указывает на то, что при выполнении команды будет обновлены PATH и тому
подобные вещи до актуального состояния. Можно рассматривать это также как
ребилд индексов автокомплита.
Задает толерантность к ошибкам, которая может быть исправлена по [tab]-[tab].
Убирает из автокомплита файлы с атрибутом +x, которые выглядят как
временные(у меня заканчиваются на тильду, можно и что-то emacs-специфичное
добавить).
Не выдавать меню в том случае, когда выбирать не из чего.
Подсветка возможных исправлений либо меню автокомплита.
То, что уже было написано вне зависимости от того видит это zsh как валидное,
будет также отражено в меню автокомплита.
Первыми в автокомплите для тильды будут hash-директории. Hash это такие
глобальные алиасы для директорий. Например hash -d v=”${HOME}/vid” задает
соответствие ~v -> ~/vid/
Эффект, который похож на glob_complete, только для expand completer. expand
completer это, например /u/b/z -> /usr/bin/z и далее после второго tab будет
меню. Must have.
Меню, а не список для истории. Без дубликатов.
Задает соответствие символов, которые могут быть автоматически преобразованы
при автокомлите, в частности это делает автокомплит нечувствительным
к регистру. Must have.
Группировка автокомлита по группам. Часто бывает что для одного варианта есть
несколько возможных источников, которые выдают разные варианты комплита,
в том случае когда семантику предугадать нельзя.
Выводить меню только в случае, если число подходящих вариантов в списке 5 или
больше, в противном случае прыгать по этому списку в цикле по tab по аналогии
с tcsh или zsh по-умолчанию.
Украшательства описаний для автокомлита.
Убирает описания для команд при автокомплите, потмоу что они медленно
работают.
Украшательства warning’ов и предложений для коррекции.
Временные файлы не учавствуют в автодополнении.
Также в автодополнении не учавствуют сами файлы автокомплита, которые
начинаются с _.
Разделение секций для автокомплита man-страниц.
Автокомплит для предыдущей директории, must have.
Игнорировать url и mht для плеера, копирования, перемещения и др.
Сортировка по отсортированному списку файлов, из списка, который представляет
собой расширение файлов аудио или видео, без учета регистра, для медиаплеера.
Нужно чтобы автодополнение не выдывало всякую ненужную ерунду.
Украшательства для длинного меню. Это нужно в том случае, когда есть очень
много вариантов, которые не влезают на экран.
Использовать при автокомплите файлов подсветку наиболее быстрым известным мне
способом. Некоторые другие будут тормозить, особенно на больших списках.
Возможно можно реализовать подстановку LS_COLORS и быстрее.
Впихивает два слеша в один.
Быстрый и красивый, хотя страшно выглядещий, способ автокомплита ssh хостов.
wine автодополняет только exe файлы.
Раскраска параметров в меню автодополнения циановым цветом
А алиасов зеленым.
Комплит того, что было введено, без исправления ошибок, голубым цветом. Почти
невероятная ситуация, на самом деле. будет в самом конце списка.
Зарезервированные слова подсвечиваются голубым цветом.
Умная и красивая автодополнялка для kill. Дополняет вывод по имени процесса
и подсвечивает это дело голубеньким :D
Zathura это минималистичная читалка для pdf/djvu и всякого. Дополнять только
по файлам, типа pdf,djvu и директории(для навигации).
Задает то, что будет показано в описании команд
Украшательства автокомплита для taskwarrior. Я его использую в качестве
легкого псевдо-аналога emacs org-mode для управления своими тасками.
Подсвечивает белым цветом ту часть команды, которая уже была введена.
Практического смысла большого нету, но мне нравится как это выглядит.
Какие-то опции, связанные с кешированием, rehash и тп, смысла которых я не
помню. Также задается автоматическое выдирание автокомплита опций для команд
gnu по списку cp deborphan df feh …
Загрузка автокомплита из bash-completions.
При нажатии на tab показывает три точки. Это просто украшательство, которое
будет работать в случае долгого ответа системы автокомплита, например это
возможно при обращении к удаленному ресурсу. Почему-то работает лично у меня
только в linux-консоли, я особо не заморачивался почему, возможно из-за
высокой скорости st/urxvt.