Вход:  Пароль:  
FreeSource: AltLinux/DotFiles/Shells/Zsh/Советы ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Советы по настройке zsh

Оглавление документа

В этой заметке приводится несколько очень полезных, на мой взгляд, советов по настройке командной оболочки zsh.

Автодополнение


Это, пожалуй, самая известная и частоиспользуемая в zsh функция, выгодно отличающая его от других командных интерпретаторов. Помимо простого дополнения имен и путей к файлам zsh также способен дополнять опции к командам (попробуйте, к примеру, find . -na<Tab> -s<Tab>), названия страниц руководств (man chkc<Tab> дополнится до man chkconfig) и раскрывать сокращенные пути (к примеру, /mn/o/d/a<Tab> раскрывается до /mnt/other/distrib/alt).


Чтобы включить это продвинутое автодополнение, вам нужно добавить в конфигурационный файл zsh (~/.zshrc) следующие строки:



Замечу, что пользователям ALT Linux этого делать не потребуется, так как данная возможность включена по умолчанию (см. /etc/zshrc)


Выбор вариантов можно оформить в виде меню с подсветкой текущего варианта. Простой пример:



Разноцветные пункты меню в зависимости от типа объекта. Тоже простой пример из info zsh:



По умолчанию автодополнение для kill и killall не показывает процессы без controlling tty (для всех пользователей кроме root). Устраняем этот недостаток и дополнительно добавляем «красоты»:



Про автодополнение для ssh/scp написано ниже.

Настройка приглашения


За внешний вид приглашения отвечает переменная PROMPT (а не PS1, как в bash!). Все возможные специальные последовательности, которые возможно использовать в приглашении, описаны в man zshmisc в главе PROMPT EXPANSION. К примеру, вы можете, для начала, установить (если оно еще не установлено) самое обычное приглашение:



Подробнее о том, что означает каждая из специальных последовательностей, вы можете узнать в странице руководства ;)


Еще одна удобная особенность: приглашение может быть выведено не только в левой части экрана, но и в правой! За это отвечает переменная RPROMPT.



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

Темы приглашений


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



В результате вы увидите список из 15 предустановленных тем для приглашения. Попробовать понравившуюся можно командой promptinit название_темы Команда prompt -p выдает примеры всех установленных тем строки приглашения.

Автопереход


Обычно при работе в терминале приходится довольно часто перемещаться по директориям. И каждый раз приходится вводить cd /path/to/file Но разработчики zsh подумали, что использование этой команды нужно как-то упростить и придумали autocd! Смысл прост: вместо cd /path/to/file вам нужно ввести лишь путь! Чтобы уже начать пользоваться этой удобной возможностью, добавьте еще одну строчку в ~/.zshrc:


Именованные каталоги


Еще один способ, чтобы быстрее перемещаться по иерархии каталогов. Этот способ чем-то напоминает создание alias'ов (псевдонимов) для команд. Для этого вам нужно прописать в конфигурационный файл часто посещаемые вами пути к файлам и соответствующие им имена. К примеру, вот так:



Теперь можно будет вместо /mnt/other/distrib набрать его имя ~dist При этом здесь также действует и автодополнение имени, и к низлежайшим файлам/каталогам.

Глобальные псевдонимы


Кроме обычных псевдонимов существуют также глобальные. Их использование лучше всего рассмотреть на примере. Вот часть конфига zsh, которой определяются глобальные псевдонимы:



Теперь для того, чтобы узнать установлен ли в вашей системе пакет example будет достаточно ввести: rpm -qa G example. Вместо 'G' zsh подставит '| grep' и таким образом вы найдете нужный пакет в списке всех установленных. Таким же образом используются и другие глобальные псевдонимы из примера:



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

Псевдонимы расширения


Еще один интересный вид псевдонимов – псевдонимы расширения (suffix aliases). Эти псевдонимы позволяют расширить команду вида name.ext до program name.ext. Например, если в файле конфигурации прописать:



команда movie.avi будет расширена до mplayer movie.avi

Рекурсивный глоббинг


«Zsh позволяет производить рекурсивное раскрытие имен файлов. Для этого используются формы **/ и ***/ Первая форма отличается от второй лишь тем, что не следует по символьным ссылкам. Так, например



произведет поиск файлов с именем foo во всех подкаталогах.»*

Автокоррекция команд


Иногда при вводе команд или путей мы допускаем ошибки. Причем не очень серьезные, как правило, это опечатки. В zsh есть способ, как быстро разрешать подобные ситуации — автокоррекция команд. Включаем её:



После этого, если вы введёте sl вместо ls и /urs вместо /usr, то zsh укажет вам, что вы ошиблись. В ваших руках также возможность настроить запрос на коррекцию, для этого достаточно присвоить нужное значение переменной SPROMPT Вот, к примеру, как это настроено у меня:



Взгляните на результат:


Взаимодействие с терминалом


Если zsh запущен в каком-либо псевдотерминале (xterm, aterm и т.д.), то возможно управлять заголовком окна. Т. е. вы можете попросить zsh выводить в него что-нибудь полезное. Вот пример (добавьте в ~/.zshrc):



Здесь проверяется значение переменной $TERM, и если оно равно rxvt или начинается с xterm, то выполняется действие. В частности, задается функция, которая и выводит строку, похожую на приглашение, в заголовок окна. Функция precmd() выполняется каждый раз перед выводом приглашения. Также вы можете использовать функцию preexec(), которая выполняется перед запуском любой программы, и chpwd(), которая «вызывается при изменении рабочего каталога. [...] Кроме того, может быть определена функция periodic, которая может выполнятся через каждые $PERIOD (если этот параметр определен) секунд перед выводом приглашения.»*


Быть может, вам покажется удобным выводить имя запущенной программы? Тогда вместо третьей строчки напишите


Клавиатурные комбинации как в Vim/Emacs


Zsh умеет частично эмулировать Vim/Emacs при редактировании командной строки. Команды bindkey -v и bindkey -e соответственно загружают необходимые раскладки клавиш.


«Магический» поиск в истории команд



Теперь, если нажать Ctr+X Ctrl+Z, при вводе команды будет автоматически производится поиск в истории по первым буквам команды. Нажатие Ctrl+Z отключит этот режим.

Мелкие фишки


В поставке zsh идет несколько интересных модулей.


Тетрис :)



Потом жмем Ctrl-T и играем :) Вместо ^T можно использовать любое другое сочетание клавиш. Выход – q.


Калькулятор



Текстовый редактор



Управление – как в vim или emacs в зависимости от используемого в командной строке режима (см. выше).

Автодополнение имени хоста для SSH


Подсмотрено у virtuoso на #debian-russian:



Однако этот способ имеет несколько неисправимых преимуществ. Более «кошерный» вариант предложен в виде патча здесь.
Можно настроить и локально, для «себя любимого». Для этого:


1. Создать каталог ~/.zsh/functions
2. Положить _known_hosts и пропатченый _ssh в этот каталог
3. В ~/.zshrc добавить:



По умолчанию для ssh/scp и им подобных дополняются и хост и пользователь. Отключить отображение пользователей в списке вариантов (не отключая самой возможности дополнять их) можно так:


Подстановка полного пути из $PATH


Если вам требуется отредактировать какой-нибудь скрипт, который расположен в $PATH или же просто использовать полный путь к програме, то zsh способен отыскать требуемую программу и использовать полный путь к ней. К примеру, чтобы отредактировать файл script достаточно будет ввести:



В zsh еще очень много разных удобных и полезных функций и настроек. В этой заметке я попытался рассказать о той их части, о которой мне известно и которая наиболее часто используется мной (хотя promptinit я использовал лишь раз, но мне показалось это интересным и я все-таки позволил себе упоминуть об этом здесь ;))

Полезные ссылки


На русском:


На английском:


* цитата из статьи Алекса Отта


Страницы, ссылающиеся на данную: Altlinux/DotFiles/Shells/Zsh
PhpCoder
Software/Zsh


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]