Linux Mint и его Cinnamon. Очерки применителя
Шрифт:
Далее следуют две очень важные строки, определяющие одну из полезнейших возможностей Zsh — тот самый механизм history-substring-search, о котором говорилось ранее:
bindkey "^[[A" up-line-or-search
bindkey "^[[B" down-line-or-search
Следующие две строки касаются уже простого пролистывания истории в командной строке, позволяя делать это клавишами PageUp и PageDown (а не только стрелками Up и Down, которые в этом качестве работают всегда и везде):
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history
Этими
bindkey "^[OH" beginning-of-line
bindkey "^[OF" end-of-line
bindkey "^[[3~" delete-char
Это как раз пример тех строк, которые as is копировать не нужно. Во-первых, в общем случае, могут не работать другие клавиши (скорее, не только эти). Во-вторых же и главных, в более иных терминалах коды тех же клавиш могут быть совсем другими. Какими — легко определить, нажав Control+V, а затем «неправильную» клавишу. Именно таким образом получены коды для Home, End и Delete в системе, в которой сочиняются эти строки.
Теперь — опции, определяющие магию Zsh при навигации по файловой системе:
cdpath=(/home/current /home/current/alv.me /etc)
setopt autocd
Первая строка позволяет с помощью команды cd переходить в подкаталоги перечисленных каталогов, не набирая никаких путей, ни относительных, ни абсолютных, вторая же — обходиться без команды cd.
На грани между опциями навигации и автодополнения находятся такие строки:
setopt menucomplete
zstyle ':completion:*' menu select=1 _complete _ignored _approximate
Они в паре обеспечивают «менюобразный» вывод списка доступных дополнений по нажатию клавиши табуляции. И это как раз тот случай, когда последовательность строк имеет значение.
Аналогично и со следующими строками — теми самыми, которые обеспечивают волшебство развёртывания сокращённого ввода пути в полный:
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 такова, что она не требует ввода этой команды в явном виде. И потому здесь у меня осталась единственная строка для псевдонима команды добавления репозиториев: