За что я люблю Zsh. Автодополнение

Алексей Федорчук

Волшебное свойство клавиши Tab, вызывающей автодополние — одно из первых, с чем знакомится применитель CLI. Хотя при этом часто забывается, что когда-то, в
перворождёмнном шелле Борна, никакого автодополнения не было. Оно появилось в
Csh — и сначала только для путей, но не для команд. Тем не менее, ныне
представить себе интерактиную работу в командной строке без автодополнения
невозможно (да и не нужно).

Однако Zsh клавиша Tab волшебна дважды: она не только дополняет пути и команды после их частичного ввода, но и способна развернуть аббревиатуры для тех и
других. Например, нажатие клавиши табулции после набора последовательности

$ /u/s/f/tr

развернёт её в полный путь к каталогу со шрифтами TrueType

$ /usr/share/fonts/truetype

а после нажатия клавиши Enter сделает этот каталог текущим, как
мы видели в одной из предыдущих заметок.
Правда, само по себе развёртывание аббревиатур работать не будет — его надо
активизировать такими строками в файле ~/.zshrc:

 autoload -Uz
compinit compinit

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

$ /u/s/f/tr

а затем дважды нажать клавишу табуляции, то она не только развернётся в полный путь

$ /usr/share/fonts/truetype/

но и выведет список подкаталогов указанного каталога:

dejavu/ freefont/ openoffice/ ubuntu-font-family/ droid/ liberation/
ttf-dejavu/ wqy/

И выбор нужного среди них можно выполнять либо стрелками управления курсором, либо обычными кейбиндингами типа Control+f, Control+b и им подобными:

zsh_autocomplit-02

Правда, и такая реакция Zsh на Tab возникает не из волшебства, а из присутстствия в файле ~/.zshrc таких строк:

 setopt menucomplete
zstyle ':completion:*' menu select=1 _complete _ignored _approximate

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

Содержание

Добавить комментарий