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

Аналогично и со следующими строками — теми самыми, которые обеспечивают волшебство развёртывания сокращённого ввода пути в полный:

autoload -Uz compinit

compinit

Расширенные подстановки и дополнения обеспечиваются вот этими строками:

setopt extendedglob nomatch notify

zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate

Строка

zstyle ':completion:*' use-compctl false

знаменует собой отречение от старого мира — системы дополнения compctl, в пользу новой системы compsys.

Строка

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

устанавливает равноправие при дополнениях символов нижнего регистра с верхним.

А строка

zstyle :compinstall filename '/home/zsh/.zshrc'

фиксирует файл, в который compinstall (функция автоматического конфигурирования compsys) будет вносить свои изменения при грядущих её вызовах (если они, конечно, будут).

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

alias mv='mv -i'

alias cp='cp -iR'

alias cpr='cp -fR'

alias rm='rm -i'

alias rmf='rm -f'

alias rmrf='rm -fR'

Оказывается, что для одной-единственной команды ls можно придумать больше псевдонимов, чем для всех файломанипулирующих команд, вместе взятых:

alias ls='ls -F'

alias ll='ls -lh'

alias la='ls -A'

alias li='ls -ial'

alias lsd='ls -ld *(-/DN)'

alias lsa='ls -ld .*'

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

Далее идёт серия псевдонимов для различных команд и утилит разного назначения. Здесь также расшифровка будет лишней. Ибо они или оболее-менее общеприняты:

alias h=history

alias df='df -h'

alias du='du -h'

Либо обусловлены давними привычками (как, например, more-образный вывод команды less):

alias less='less -M'

alias wget='wget -c'

alias nano='nano -$'

Либо связаны со спецификой деятельности:

alias wcl='wc -l'

alias wcw='wc -w'

alias wcm='wc -m'

alias wcc='wc -c'

Так что можно переходить к следующей убойной фиче Zsh — определению глобальных псевдонимов:

alias -g N='2>/dev/null'

alias -g L='|less'

alias -g G='|grep'

alias -g W='|wc -m'

Где, впрочем, комментарии тоже излишни.

А посему перехожу к тем самым дистрибутив-специфическим блокам, которые я предназначил для применения в Mint. Это — псевдонимы для субкоманд её утилиты apt, призванные минимизировать ввод при наиболее частых действиях по пакетному менеджменту:

alias aptin='apt install --yes'

alias apter='apt purge'

alias aptup='apt update'

alias aptug='apt upgrade'

alias aptse='apt search'

alias aptsh='apt show'

Псевдонимы для внутренних команд apt из APT также имеет смысл определить, по крайней мере один, для получения списка инсталлированных пакетов:

alias aptlist='/usr/bin/apt list --installed'

Смысл этих псевдонимов будет ясен после знакомства с очерком об утилите apt. И в них нет ничего Zsh-специфичного. В отличие от альтернативного метода, основанного на псевдонимах глобальных, которые определяются для соответствующих аргументов команды sudo. Правда, особенность реализации утилиты apt в Mint такова, что она не требует ввода этой команды в явном виде. И потому здесь у меня осталась единственная строка для псевдонима команды добавления репозиториев:

alias -g Ar='add-apt-repository'

Хотя я и утверждал не так давно, что приглашение оболочки — нечто вроде вешалки для театра, сам добрался до этой темы только к концу своего конфига. Однако вот — обычное левосторонне приглашение:

#PROMPT='%B[%n]$=>%b '

Вторичное приглашение:

#PROMPT2='%i%U> '

Правостороннее приглашение:

#RPROMPT=' %B[%~]%b '

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

autoload -Uz promptinit

promptinit

После которых вызывается уже одна из конкретных тем:

#prompt fade

prompt fade white grey blue

#prompt clint

Естественно, что остальные строки должны быть закомментированы.

Осталось немного — всякая всячина. Например, предотвращение выхода из оболочки после случайного нажатия Control+D в пустой командной строке:

setopt IGNORE_EOF

Отключение раздражающего звукового сигнала при ошибках набора:

setopt NO_BEEP

Фиксация emacs-образного поведения клавиш (хотя это и так имеет место быть по умолчанию):

bindkey -e

И под занавес — определение пары переменных среды, для начала умолчального пейджера. Хотя я не так давно говорил, что расширенное перенаправление делает его практически не нужным, но, кроме всего прочего, это ещё и средство для просмотра man-страниц:

export PAGER="less"

И умолчальный редактор: не смотря на свою любовь к Joe, навыки работы с ним я утратил напрочь, поэтому так:

export EDITOR="nano"

Перейти на страницу:

Похожие книги