Немного о zshrc

Пока компилятся пакеты решил заняться немного "полезным" =)
"Статья" не претендует на описание чего то нового, но, возможно, кому то пригодится при кастомизации шелла у себя (периодически у меня знакомые просят показать мой конфиг). Также дополнения (мб и замечания?) приветствуются.
Сразу замечу, что конфиг с livecd меня не устроил по причине его громоздкости и лишнего для меня.

1. Установка запчастей
Что нужно для работы основной части конфига: pkgfile (для подсказок), сам шелл, комплит к нему и подсветка синтаксиса
pacman -S pkgfile zsh zsh-completions zsh-syntax-highlighting
Конечно, этим не ограничивается (как будет показано ниже), но минимальный набор такой

2. Конфигурация самого шелла
Все опции могут быть найдены тут.
Указываем файл с историей, число команд хранящихся в кэше текущего сеанса и число команд, хранящихся в файле.
# history
HISTFILE=~/.zsh_history
HISTSIZE=500000
SAVEHIST=500000

Раскраска!
# highlighting
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
# brackets
ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=blue,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold'
ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold'
# cursor
#ZSH_HIGHLIGHT_STYLES[cursor]='bg=blue'
# main
# default
ZSH_HIGHLIGHT_STYLES[default]='none'                                 # стандартный цвет
# unknown
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red'                         # неизвестная команда
# command
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=magenta,bold'                # зарезервированное слово
ZSH_HIGHLIGHT_STYLES[alias]='fg=yellow,bold'                         # алиас
ZSH_HIGHLIGHT_STYLES[builtin]='fg=green,bold'                        # built-in функция (например, echo)
ZSH_HIGHLIGHT_STYLES[function]='fg=green,bold'                       # функция, определенная в шелле
ZSH_HIGHLIGHT_STYLES[command]='fg=green'                             # обычная команда
ZSH_HIGHLIGHT_STYLES[precommand]='fg=blue,bold'                      # пре-команда (например, sudo в sudo cp ...)
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=yellow'                   # разделитель команд, && || ;
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green'                      # команда, найденная в путях (hashed)
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=blue,bold'            # флаги типа -*
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=blue,bold'            # флаги типа --*
# path
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan,bold'                            # станлартный путь
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=cyan'                          # префикс пути
ZSH_HIGHLIGHT_STYLES[path_approx]='fg=cyan'                          # примерный путь
# shell
ZSH_HIGHLIGHT_STYLES[globbing]='fg=cyan'                             # шаблон (например, /dev/sda*)
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=blue'                    # подстановка из истории (команда, начинающаяся с !)
ZSH_HIGHLIGHT_STYLES[assign]='fg=magenta'                            # присвоение
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan'        # конструкции типа "$VARIABLE"
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan'          # конструкции типа \"
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=blue'                 # конструкции типа `command`
# quotes
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow,underline'   # конструкции типа 'text'
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'             # конструкции типа "text"
# pattern
#ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
# root
#ZSH_HIGHLIGHT_STYLES[root]='bg=red'
Для удобства я вытащил все, что есть. Сначала включаем подсветку синтаксиса, потом указываем, что мы хотим видеть - скобочки (brackets), основные цвета (main), специальный шаблон (pattern, нужно устанавливать отдельно, в примере для rm -rf), курсор (cursor), действия рута (root). Синтаксис настроек интуитивно понятен, bg - цвет фона, fg - цвет шрифта.

Так как я условно "виндузятник", то никак не могу запомнить все эти ctrl-a и прочее, потому использую стандартные home-end...
# bindkeys
bindkey '^[[A'  up-line-or-search               # up arrow for back-history-search
bindkey '^[[B'  down-line-or-search             # down arrow for fwd-history-search
bindkey '\e[1~' beginning-of-line               # home
bindkey '\e[2~' overwrite-mode                  # insert
bindkey '\e[3~' delete-char                     # del
bindkey '\e[4~' end-of-line                     # end
bindkey '\e[5~' up-line-or-history              # page-up
bindkey '\e[6~' down-line-or-history            # page-down
Что тут важно - настройка стрелочек вверх-вниз (первые 2 строки) и настройка PageUp/PageDown (последние 2). В таком варианте стрелочки - поиск по УЖЕ введенной части команды, а PageUp/PageDown игнорируют то, что вы уже написали после приглашения командной строки.

Автокомплит:
# autocomplit
autoload -U compinit
compinit
zstyle ':completion:*' insert-tab false
zstyle ':completion:*' max-errors 2
Подключается полный автокомплит. В предпоследней строчке включается автодополнение, если вы ничего не набрали после приглашения (ненужно, но модно-стильно-молодежно). В последней - указываем максимальное возможное число опечаток, которые zsh может исправить при использовании автокомплита для команд
Приглашение:
# promptinit
autoload -U promptinit
promptinit
Включаем цвета:
# colors
autoload -U colors
colors

Куча опций
Чтобы переходить в другую директорию не по старинке "cd /path/to/dir", а просто "/path/to/dir"
# autocd
setopt autocd
Корректировка опечаток (и шаблон вопроса). Периодически бесит, но вообще полезная штука для меня
# correct
setopt CORRECT_ALL
SPROMPT="Correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) "
Дополнение истории (не затирать изменения), да и при нескольких параллельных сеансах удобно
# append history
setopt APPEND_HISTORY
Не сохраняем дубликаты в историю
# ignore dups in history
setopt HIST_IGNORE_ALL_DUPS
...и лишние пробелы тоже...
# ighore additional space in history
setopt HIST_IGNORE_SPACE
...и пустые строки
# reduce blanks in history
setopt HIST_REDUCE_BLANKS
отключаем противную пищалку
# disable beeps
unsetopt beep
и включаем калькулятор
# autoload calc
autoload zcalc
включаем pkgfile
# pkgfile
source /usr/share/doc/pkgfile/command-not-found.zsh

3. Левое и правое приглашение
Левое приглашение (у меня один конфиг для всех пользователей):
# PROMPT && RPROMPT
if [[ $EUID == 0 ]]; then
# [[email protected] dir]#
  PROMPT="%{$fg_bold[white]%}[%{$reset_color%}\
%{$fg_bold[red]%}%n%{$reset_color%}\
%{$fg_bold[white]%}@%{$reset_color%}\
%{$fg_no_bold[red]%}%m %{$reset_color%}\
%{$fg_bold[yellow]%}%1/%{$reset_color%}\
%{$fg_bold[white]%}]# %{$reset_color%}"
else
# [[email protected] dir]$
  PROMPT="%{$fg_bold[white]%}[%{$reset_color%}\
%{$fg_bold[green]%}%n%{$reset_color%}\
%{$fg_bold[white]%}@%{$reset_color%}\
%{$fg_no_bold[green]%}%m %{$reset_color%}\
%{$fg_bold[yellow]%}%1/%{$reset_color%}\
%{$fg_bold[white]%}]$ %{$reset_color%}"
fi
Первая строка для рута (if true), вторая для других пользователей (if false). $fg - цвет текста, $bg - цвет фона. Дополнения _bold и _no_bold регулируют оттенок. Обратите внимание на бэкслеш в конце каждой строки (чтобы не переносилось). Сбросить цвета ($reset_color) нужно для регулирования оттенков. Команды (например, установку цвета) нужно обрамлять в %{ ... %}, чтобы не отображалось. Доступные цвета:
black
red
green
yellow
blue
magenta
cyan
white
Список переменных для promt'ов:
%n - имя пользователя
%m - хостнейм
%M - хостнейм
%l - текущая tty
%? - код возврата предыдущего приложения
%# - # для рута и % для обычных пользователей
%T - время (HH:MM)
%* - время (HH:MM:SS)
%D - дата (YY-MM-DD)
%~ - текущая директория, хомяк будет заменен на ~
%d - то же, но без замены
%1/ - то же, но только последняя директория
Можете поиграться =)
У меня ноутбук, так что я захотел себе еще заряд батареи вынести (нужен acpi из реп)
precmd () {
  # Battery charge
  function batcharge {
    bat_perc=`acpi | awk {'print $4;'} | sed -e "s/\s//" -e "s/%.*//"`
    if [[ $bat_perc < 15 ]]; then
      col="%{$fg_bold[red]%}"
    elif [[ $bat_perc < 50 ]]; then
      col="%{$fg_bold[yellow]%}"
    else
      col="%{$fg_bold[green]%}"
    fi
    echo "%{$fg_bold[white]%}["$col$bat_perc"%{$fg_bold[white]%}%%]%{$reset_color%}"
  }
  # last command
  returncode="%(?.%{$fg[green]%}.%{$fg[red]%})%?%{$resetcolor%}"
  RPROMPT="%{$fg_bold[white]%}[%{$reset_color%}\
%{$fg_bold[cyan]%}%T%{$reset_color%}\
%{$fg_bold[white]%}] %{$reset_color%}"\
$(batcharge)\
"%{$fg_bold[white]%}[%{$reset_color%}"\
$returncode\
"%{$fg_bold[white]%}]%{$reset_color%}"
precmd - показывает, что вот этот кусок нужно каждый раз (к каждому новому приглашению) вычислять. Функция сама по себе довольная простая - определили заряд, подставили цвет, добавили к часам еще и заряд (скрин о5 же, ниже). С returncode немного магии. Конструкции $(if.true.false) в zsh есть условный оператор. Если код возврата true (равен 0), то ставим цвет зеленый, иначе - красный.

ТОЖЕ САМОЕ, Ъ-МЕТОД:
# PROMPT && RPROMPT
if [[ $EUID == 0 ]]; then
# [[email protected] dir]#
  PROMPT=$'%{\e[1;37m%}[%{\e[1;31m%}%n%{\e[1;37m%}@%{\e[0;31m%}%m %{\e[1;33m%}%1/%{\e[1;37m%}]#%{\e[0m%} '
else
# [[email protected] dir]$
  PROMPT=$'%{\e[1;37m%}[%{\e[1;32m%}%n%{\e[1;37m%}@%{\e[0;32m%}%m %{\e[1;33m%}%1/%{\e[1;37m%}]$%{\e[0m%} '
fi
precmd () {
  # Battery charge
  function batcharge {
    bat_perc=`acpi | awk {'print $4;'} | sed -e "s/\s//" -e "s/%.*//"`
    if [[ $bat_perc < 15 ]]; then
      col='%{\e[1;31m%}'
    elif [[ $bat_perc < 50 ]]; then
      col='%{\e[1;33m%}'
    else
      col='%{\e[1;32m%}'
    fi
    echo '%{\e[1;37m%}['$col$bat_perc'%{\e[1;37m%}%%]%{\e[0m%}'
  }
 RPROMPT=$'%{\e[1;37m%}[%{\e[1;36m%}%T%{\e[1;37m%}]%{\e[0m%} '$(batcharge)
}
Конструкции типа %{\e[1;37m%} - начало цвета, {\e[0m%} - конец цвета. Цвета задаются так: модификатор;цвет;фон. Цифры для них приведены ниже:
0 обычные цвета
1 яркие цвета
3 наклонный
4 подчеркнутый
5 мигающий
30 черный
31 красный
32 зеленый
33 желтый
34 синий
35 фиолетовый
36 циановый
37 белый
40 черный фон
41 красный фон
42 зеленый фон
43 желтый фон
44 синий фон
45 фиолетовый фон
46 циановый фон
47 белый фон

4. Алиасы
Сразу оговорюсь, НЕ ПЕРЕНОСИТЕ ИХ БЕЗДУМНО. Алиасы, использующие приложения, которых у вас нет в системе, сфейлятся и не дадут загрузиться конфигу полностью.
Функция для повышения секурности (вдруг вам алиасы изменили, чтобы пароль украсть, а тут команда вам подскажет, что вы запускаете)
show_which() {
  OUTPUT=$(which $1 | cut -d " " -f7-)
  echo "Running '$OUTPUT'" 1>&2
}
Первый пак алиасов:
## alias
# для цветного грепа
alias grep='grep --colour=auto'
# замена top на htop
alias top='show_which top && htop'
# использование хрома для хотьбы через разные прокси-серверы (i2p и tor included)
alias chrommsu='show_which chrommsu && chromium --proxy-server=cache.msu:3128'
alias chromtor='show_which chromtor && chromium --proxy-server="socks://localhost:9050" --incognito'
alias chromi2p='show_which chromi2p && chromium --proxy-server="http=127.0.0.1:4444;https=127.0.0.1:4445" --incognito'
# человеческие df и du
alias df='show_which df && df -k --print-type --human-readable'
alias du='show_which du && du -k --total --human-readable'
# замена less и zless на симпотяшный vimpager
alias less='vimpager'
alias zless='vimpager'
# чтобы rm был более интерактивным (усложняет выстрелить себе в ногу)
alias rm='show_which rm && rm -I'
делаем вместо su красивый su - с подсказкой:
su () {
  checksu=0
  for flags in $*; do
    if [[ $flags == "-" ]]; then
      checksu=1
    fi
  done
  if [[ $checksu == 0 ]]; then
    echo "Use 'su -', Luke"
    /usr/bin/su - $*
  else
    /usr/bin/su $*
  fi
}
Алиасы для ls (man ls)
alias ls='show_which ls && ls --color=auto'
alias ll='show_which ll && ls --group-directories-first -l --human-readable'
alias lr='show_which lr && ls --recursive'
alias la='show_which la && ll --almost-all'
alias lx='show_which lx && ll -X --ignore-backups'
alias lz='show_which lz && ll -S --reverse'
alias lt='show_which lt && ll -t --reverse'
alias lm='show_which lm && la | more'
Алиасы для быстрого запуска из консоли файлов с определенным расширением (просто набери имя файла!)
# alias -s
alias -s {avi,mpeg,mpg,mov,m2v,mkv}=mpv
alias -s {mp3,flac}=qmmp
alias -s {odt,doc,xls,ppt,docx,xlsx,pptx,csv}=libreoffice
alias -s {pdf}=okular
autoload -U pick-web-browser
alias -s {html,htm}=opera
sudo-алиасы. Суть их в том, чтобы для 95% команд, которые требуют прав рута, не набирать sudo каждый раз
# sudo alias
if [[ $EUID == 0 ]]; then
  alias fat32mnt='show_which fat32mnt && mount -t vfat -o codepage=866,iocharset=utf8,umask=000'
  alias synctime='show_which synctime && { ntpd -qg; hwclock -w; date; }'
else
  alias fat32mnt='show_which fat32mnt && sudo mount -t vfat -o codepage=866,iocharset=utf8,umask=000'
  alias umount='show_which umount && sudo umount'
  alias mount='show_which mount && sudo mount'
  alias netctl='show_which netctl && sudo netctl'
  alias synctime='show_which synctime && { sudo ntpd -qg; sudo hwclock -w; date; }'
  alias wifi-menu='show_which wifi-menu && sudo wifi-menu'
  alias dhcpcd='show_which dhcpcd && sudo dhcpcd'
  alias journalctl='show_which journalctl && sudo journalctl'
  alias systemctl='show_which systemctl && sudo systemctl'
  alias modprobe='show_which modprobe && sudo modprobe'
  alias rmmod='show_which rmmod && sudo rmmod'
  alias staging-i686-build='show_which staging-i686-build && sudo staging-i686-build'
  alias staging-x86_64-build='show_which staging-x86_64-build && sudo staging-x86_64-build'
fi
Глобальные алиасы. Используются примерно так:
cat file g foo
эквивалентно с таким конфигом
cat file | grep foo
# global alias
alias -g g="| grep"
alias -g l="| less"
alias -g t="| tail"
alias -g h="| head"
alias -g dn="&> /dev/null &"
Стандартные 4 + перенаправление всего, что можно, в черную дыру.

5. Переменные
Путь
# path
export PATH="$PATH:$HOME/bin"
Маска создаваемых файлов (число эквивалентно chmod $((666-$NUMBER))):
# umask
umask 022
Редактор и пейджер
# editor
export EDITOR="vim"
export PAGER="vimpager"
nafanja ниже подсказывает, что правильнее было бы немного по-другому.
Хэши. Типа как вы вводите ~user эквивалентно /home/user, то тут ~global эквивалентно /mnt/global
# hash
hash -d global=/mnt/global
hash -d windows=/mnt/windows
hash -d iso=/mnt/iso
hash -d u1=/mnt/usbdev1
hash -d u2=/mnt/usbdev2

6. Функции
Мне лень набирать xrandr че-та че-та, потому специальная функция, которая все сделает за меня.
# function to contorl xrandr
# EXAMPLE: projctl 1024x768
projctl () {
  if [ $1 ] ; then
    if [ $1 = "-h" ]; then
      echo "Usage:   projctl [ off/resolution ]"
      return
    fi
    if [ $1 = "off" ]; then
      echo "Disable VGA1"
      xrandr --output VGA1 --off --output LVDS1 --mode 1366x768
    else
      echo "Using resolution: $1"
      xrandr --output VGA1 --mode $1 --output LVDS1 --mode $1
    fi
  else
    echo "Using default resolution"
    xrandr --output VGA1 --mode 1366x768 --output LVDS1 --mode 1366x768
  fi
}
Функции запаковки и распаковки архивов (к своему стыду, не помню большинства флагов для tar):
# function to extract archives
# EXAMPLE: unpack file
unpack () {
  if [[ -f $1 ]]; then
    case $1 in
      *.tar.bz2)   tar xjfv $1                             ;;
      *.tar.gz)    tar xzfv $1                             ;;
      *.tar.xz)    tar xvJf $1                             ;;
      *.bz2)       bunzip2 $1                              ;;
      *.gz)        gunzip $1                               ;;
      *.rar)       unrar x $1                              ;;
      *.tar)       tar xf $1                               ;;
      *.tbz)       tar xjvf $1                             ;;
      *.tbz2)      tar xjf $1                              ;;
      *.tgz)       tar xzf $1                              ;;
      *.zip)       unzip $1                                ;;
      *.Z)         uncompress $1                           ;;
      *.7z)        7z x $1                                 ;;
      *)           echo "I don't know how to extract '$1'" ;;
    esac
  else
    case $1 in
      *help)       echo "Usage: unpack ARCHIVE_NAME"       ;;
      *)           echo "'$1' is not a valid file"         ;;
    esac
  fi
}
# function to create archives
# EXAMPLE: pack tar file
pack () {
  if [ $1 ]; then
    case $1 in
      tar.bz2)     tar -cjvf $2.tar.bz2 $2                 ;;
      tar.gz)      tar -czvf $2.tar.bz2 $2                 ;;
      tar.xz)      tar -cf - $2 | xz -9 -c - > $2.tar.xz   ;;
      bz2)         bzip $2                                 ;;
      gz)          gzip -c -9 -n $2 > $2.gz                ;;
      tar)         tar cpvf $2.tar  $2                     ;;
      tbz)         tar cjvf $2.tar.bz2 $2                  ;;
      tgz)         tar czvf $2.tar.gz  $2                  ;;
      zip)         zip -r $2.zip $2                        ;;
      7z)          7z a $2.7z $2                           ;;
      *help)       echo "Usage: pack TYPE FILES"           ;;
      *)           echo "'$1' cannot be packed via pack()" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}
Функции с автоматическим рехешем (обновлением путей) при установке/удалении пакета:
pacman () {
  /usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\|R" && rehash
}
yaourt () {
  /usr/bin/yaourt $* && echo "$*" | grep -q "S\|R" && rehash
}
# для использования тестовых репозиториев без дополнительных телодвижений (оно мне надо)
# файл содержит раскомменченные тестинги /etc/pactest.conf
yatest () {
  /usr/bin/yaourt --config /etc/pactest.conf $* && echo "$*" | grep -q "S\|R" && rehash
}
(автокомплит для yaourt -Ss в такой комбинации работает только после запроса пароля, баг апстрима, см. ниже).

7. Обещанный скриншот


8. Сам файл
github (почти актуальная версия)

P.S. главное, не бойтесь экспериментировать=)
PGP 0x31361F01
arcanisrepo
Спасибо! Мне очень понравился поиск в истории по стрелке вверх и переход к каталогам без cd.
Ну и ещё замечательная идея (не связанная, впрочем, именно с zsh) - это алиасы с sudo. Особенно хороша в сочетании с беспарольным sudo, как у меня.
В закладочки. Спасибо за труды. =) Обожаю этот шелл. Всего раз попробовал и забыл про баш навсегда. Вообще я использую вот эти конфиги. Но теперь я смогу их и подкорректировать, и написать свою тему. ;)
Keep it simple, stupid!
HISTFILE=~/.histfile
лучше .zsh_history по аналогии с .bash_history

# path
export PATH="$PATH:$HOME/bin"
а разве не правильнее заюзать вот так
~/.zshenv
typeset -U path
path=(~/.local/bin $path)
по поводу где настраиваются важные переменные и команды http://zsh.sourceforge.net/Intro/intro_3.html
и пользовательский bin должен перекрывать локальный /usr/local/bin и системный /usr/bin, так что он должен быть вначале $PATH
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
arcanis
Немного о zshrc
Так и не понял зачем это...
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
nafanja
лучше .zsh_history по аналогии с .bash_history
ога, но дело вкуса. Главное было показать, как можно сделать.
nafanja
а разве не правильнее заюзать вот так
~/.zshenv
typeset -U path
path=(~/.local/bin $path)
по поводу где настраиваются важные переменные и команды http://zsh.sourceforge.net/Intro/intro_3.html
и пользовательский bin должен перекрывать локальный /usr/local/bin и системный /usr/bin, так что он должен быть вначале $PATH
ценное замечание по поводу перекрывания и того, как должно выглядеть. Но (опять же имхота) мне удобнее, когда настройки как можно менее размазаны по разным файлам. А по поводу перекрытия я бы лучше советовал использовать разные команды)
palpalych
Так и не понял зачем это...
ви таки шелл не настраиваете?
PGP 0x31361F01
arcanisrepo
А как zsh научить, чтоб после установки программы через pacman, к примеру, она была в автокомплите видна?
Огромное спасибо) Добавил еще показ используемой ветки git
function git_promt {
  if ! git rev-parse --git-dir > /dev/null 2>&1; then
    return 0
  fi
  git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
  echo '%{\e[1;37m%}[%{\e[1;32m%}'$git_branch'%{\e[1;37m%}]%{\e[0m%}'
}
RPROMPT=$(git_promt)$' %{\e[1;37m%}[%{\e[1;36m%}%T%{\e[1;37m%}]%{\e[0m%} '$(batcharge)
muffinmad
А как zsh научить, чтоб после установки программы через pacman, к примеру, она была в автокомплите видна?
легко
pacman () {
  /usr/bin/sudo /usr/bin/pacman $* && echo "$*" | grep -q "S\|R" && rehash
}
для йогурта
yaourt () {
  /usr/bin/yaourt $* && echo "$*" | grep -q "S\|R" && rehash
}
Правда, yaourt в таком виде упорно запрашивает пароль при обращении к базе данных (в yaourtrc стоит PACMAN="/usr/bin/pacman"). Кажется, это баг автокомплита.
Отписался в апстрим
PGP 0x31361F01
arcanisrepo
небольшое изменение.
Переместил zsh-completions и zsh-syntax-highlighting в репы. Теперь их можно установить прямо с установочного образа без дополнительных плясок (навроде ручной сборки, например).
Добавил цвета (теперь все). Добавил к ним описание. Изменил скриншот.
Отредактировал приглашения
PGP 0x31361F01
arcanisrepo
 
Зарегистрироваться или войдите чтобы оставить сообщение.