Pull to refresh

Comments 124

за zsh-syntax-highlighting спасибо!
не подскажите как им вводимую команду разукрасить? а то до нажатия на бэкспейс не хочет раскрашивать.

К слову сказать, горячие клавиши в баше имеются (bind, а узнать код клавиши можно через read. так же в обоих шелах можно выставить vi mode — set -o vi ), но вот хоткееев с префиксами в баше кажется нет…
распаковка архивов аналогична и для баша, выкидывание повторений и прочего хлама из истории в баше тоже имеется
grc
— .zshrc — if [ -f /usr/bin/grc ]; then
alias ping=«grc --colour=auto ping»
alias traceroute=«grc --colour=auto traceroute»
alias make=«grc --colour=auto make»
alias diff=«grc --colour=auto diff»
alias cvs=«grc --colour=auto cvs»
alias netstat=«grc --colour=auto netstat»
fi
о grc вкурсе, но здесь совсем другая тема — подсвечивает текущую команду (к примеру, красным несуществующую, зеленым существующую) и прочее…
Выходит, zsh может заменить архиватор?


Это простейшая функция. Даже близко не архиватор.

Насколько мне известно, в bash горячие клавиши изменению не подлежат. Впрочем, не исключено, что я ошибаюсь. Это известные всем линуксоидам клавиши редактора emacs. Они взяты за основу и будут работать на любой машине, где установлен bash.


Тоже можно включить vi-like режим.

В случае с bash, надо создать файл ~/.inputrc и добавить в него следующее:

    set editing-mode vi
    set keymap vi


Это простейшая функция. Даже близко не архиватор.
перефразирую, эти две функции унифицируют некоторый функции разных упаковщиков/распаковщиков (почти как atool)
… или же переопределить клавиши вручную, почти так же (совсем так же?) как и в zsh.
И в каждом терминале затем каждый раз писать set -o vi?
Зачем?! Вы в zsh в каждом терминале пишете вышеупомянутое?
Затем, что если в конфиге нигде ничего нет про vi-like режим, то нужно в каждом новом терминале (сессии) заново это писать.
Ой ли? В zsh так же «в конфиге нигде ничего нет про vi-like режим».
Я вот пробовал включать vi режим. Жутко неудобно. Полчаса искал как же теперь делать поиск, который раньше был на ctrl-r.
Согласен. Предпочитаю emacs с кучей заимствований из vim (не из vi режима), включая <C-r>+/<C-r>*, <C-o>+некоторые операторы. Теперь жалею, что такого нет в самом vim (командный режим там на редкость убог по сравнению с zsh, но не с bash).
не подскажите как им вводимую команду разукрасить? а то до нажатия на бэкспейс не хочет раскрашивать.
вставил после определения цветов и наступила благодать
UFO just landed and posted this here
А ещё лучше /usr/bin/env python :)
Ага, а в арче это — python3, для второго надо /usr/bin/env python2
С чего бы? Портабельность не аргумент (лично для меня), так как скрипты пишу для себя.
эм, насколько я знаю во многих системах — /bin/sh -> алиас к /bin/bash
Спасибо, пригодится. Мой переход на zsh состоялся не так давно, предпочитаю наращивать функциональность по мере надобности. Пока большего не нужно.
Да, либо oh-my-zsh, либо grml,. Конфигурировать zsh с чистого листа — это для сильных духом.
Меня grml полностью устраивает, с oh-my-zsh как-то не срослось, хотя он и более гибкий.
Расскажите, пожалуйста про grml и его отличия от oh-my-zsh. Сижу на oh-my-zsh, но любопытно стоит ли мигрировать?
oh-my-zsh модульный и сильно кастомизируемый, а grml просто хорошо вылизанный конфиг. Я два раза пытался пересесть на oh-my-zsh, но оба раза не сумел его настроить так, что бы он не выглядел аляповато и был так же удобен. К сожалению, сейчас я уже не вспомню, что конкретно меня не устроило.

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

А вот строчки из примера про zsh-syntax-highlighting, не заработали :(
ibex, а ваш терминал понимает 256 цветов? Укажите ему это, затем в файле настроек измените значения на свои, используя хотя бы вот эту таблицу цветов. Выходим из терминала и снова входим в него, всё должно работать.
Спасибо, почитаю на досуге. Пока не вникал в детали, но grc и просто разукрашенный вывод работает.
zsh — это в первую очередь удобство повседневного использования. Если вам удобен вывод с grc, просто используйте его и не заморачивайтесь. А если нет времени настраивать под себя, то grml или oh-my-zsh и правда лучший выбор.
zsh без собственных настроек лучше не использовать вовсе.

Вот оно чо! Несколько раз пытался использовать zsh, но как-то особых плюсов не нашёл, что-то удобней, что-то нет, а в ubuntu как-то показалось, что zsh из коробки меньше команд знает, чем bash-competitions, а аналогичного пакета не нашёл.
Я поставил oh-my-zsh, потом включил в нём тему «random», чтобы каждый раз бралась новая (а там их более сотни) — и оно меня теперь радует.

О многих возможностях prompt'а (которые реально удобны!) я даже не подозревал.
Например, в zsh после for обязательно вставлять пробел, нумерация массивов в zsh начинается с 1, чего совершенно невозможно понять.
Так, если вы используете shell для повседневной работы, исключающей написание скриптов, используйте zsh. Если вам часто приходится писать свои скрипты, только bash!

сколько пробовал всякие скрипты запускать, работало нормально, если в скрипте прописать #!/bin/bash. Например, скрипт:
#!/bin/bash

w=("I" "like" "archlinux")
for((i=0; i < 3; i++))
do
  echo ${w[$i]}
done

Вполне корректно работает, если запускать из-под zsh.
> работало нормально, если в скрипте прописать #!/bin/bash

Юникс-сообществом башизмы порицаются.
Вы так говорите это, как будто бы так сложно писать на sh.
Несложно. Но zsh дает вам больше возможностей.
Это позволяет мне работать комфортнее и быстрее.
Засчёт тех, кто будут ваши скрипты, мучаясь, запускать. Нет уж, спасибо.
Засчёт тех, кто будут ваши скрипты, мучаясь, запускать.
Додумывать за меня ваше хобби или случайно получилось?
Мысль о том, что скрипты пишутся не только для кого-то, но и для решения собственных задач видимо вас не посещала.
Ну понятно, да. Write-only style. Мысль о том, что Ваши скрипты, возможно, кому-то пригодятся и будут использоваться, видимо, Вам не посещала. Это только другие — вот же ж дураки! — пишут скрипты, которыми пользуются тысячи. И поделом им, пусть дальше пишут на POSIX shell.
Мысль о том, что Ваши скрипты, возможно, кому-то пригодятся и будут использоваться, видимо, Вам не посещала
«Собственные задачи», вам эта фраза хоть о чем-то говорит?

По вашей логике в мире должен быть один единственный «язык программирования». Отвечать на остальное — это скатываться во флейм и троллинг.
Какой смысл писать скрипты, которые будут работать у меня и ещё двух с половиной человек?
Примерно такой же, как писать на пейтоне, которого в стандартной поставке LTS обычно нет.

Давайте уж тогда и от библиотек откажемся, заодно. Правда, ассемблер и коды тоже не панацея, обязательно придумают какой-нибудь mainframe.

Просто он запускается из-под баш на самом деле. zsh запускает bash и передаёт ему скрипт параметром. По крайней мере должен, если zsh не включает какой-то режим совместимости вопреки явному указанию интерпретатора в скрипте.
Нет, не работает. Запускать надо используя zsh scriptname, иначе запуститься bash. Зато в zsh работает
for ((i=0; i<3; i++)) {
    echo $i
}
на многих коммерческих проектах обычно используется The Korn Shell. хотя он и старый, и в нем нет многих красот, но он существует под все Unix платформы и это его главное преимущество
UFO just landed and posted this here
Кстати, пользуюсь mksh, да.
># включить историю команд
>setopt APPEND_HISTORY
Разбавили статью переводческим юмором, молодец.

У меня по zsh другой вопрос — как имитировать поведение опции cdspell из баша?
Там при указании неправильного пути шелл сам молча исправляет путь, не отвлекая меня вопросами Да/Исправить/Отмена.
Т.е. если я в спешке ввёл /otp, то хотелось бы чтобы шелл молча перекинул меня в /opt
Это отдельная опция, не связанная с автокомплитом, так что про него писать не надо.
phikus
как имитировать поведение опции cdspell из баша?
 shopt -s cdspell
Исправляет опечатки, если может.
Например по cd /avr/logs автоматически перейдет в /var/log.
/home/mulder/.zshrc:71: command not found: shopt
> apt-cache search shopt
>

нету в дебиане такого
как имитировать поведение опции cdspell из баша?

/home/mulder/.zshrc


К. О. спешит сообщить, что пробовать использовать shopt имеет смысл в баше.
foxmuldercp, извините, ступил, это опция для bash'a, a не zsh.
zsh, ЕМНИП, так не умеет.
Ну конечно, не умеет, ага

# list of completers to use
zstyle ':completion:*::::' completer _expand _complete _ignored _approximate

# allow one error for every three characters typed in approximate completer
zstyle -e ':completion:*:approximate:*' max-errors \
'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )'

А ещё вот так умеет:
tail -f /v/l/a
экспандится в
tail -f /var/log/all.log

Конечно, если экспанд однзначный.
Если нет — спросит, предложит варианты.

Вобщем, man zshall — там много вкусного: и про approximate, и про всё остальное тоже.
>Ну конечно, не умеет, ага
Исправляет с запросом. Вы читали мой вопрос? cdspell в баше видели?
Если в вопросе не волокёшь, то не надо информационный шум создавать, посидите, почитайте молча, что умные люди пишут
cubuanic
Ну конечно, не умеет, ага
Оно меняет, но по табу, а cdspell в баше меняет автоматом.
А ещё вот так умеет:
tail -f /v/l/a
экспандится в
tail -f /var/log/all.log
Это называется globbing, вещь крутейшая.
Но работает также по табу. Введя
tail -f /v/l/a
и нажав enter без таба вы получите
tail: /v/l/a: No such file or directory
Спасибо за статью.

> Запускаем браузер, жмём Ctrl+O, выбираем файл и просматриваем его.

Ну это Вы преувеличили… $ app
Или так:
# linux/bsd
xdg-open <file>

#macosx
open <file>

# можно еще алиасы настроить
alias xo='xdg-open'
alias sxo='sudo xdg-open'

Кстати, по поводу небольших плюшек в .zshrc. Вставлю и я свои пять копеек.
zstyle ':completion:*' insert-tab false         # Автокомплит для первого символа

# pkgfile - только для Арча. При установленном pkgfile
source /usr/share/doc/pkgfile/command-not-found.zsh

# я не пользуюсь bindkeys -e, у меня все свое
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 ';5D' backward-word                     # ctrl+left 
bindkey ';5C' forward-word                      # ctrl+right
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
Извиняюсь, нужно было прокомментировать. Дело в том, что zsh умеет делать автокомплит из истории по команде. Например, если я вводил vim ~/.zshrc ранее, то потом я могу ввести только vim, нажать кнопку вверх и он сам мне подставит продолжение строки из истории. Кнопки page-up, page-down служат привычной навигацией по истории. Назначение всех других клавиш в общем то достаточно понятно.

Манипуляции с pkgfile тоже довольно понятны арчеводам — если я пытаюсь запустить бинарник, которого содержится в неустановленном пакете, то мне zsh подскажет, где этот бинарник можно найти.
мой конфиг
дополняет хосты из списка при попытке подключения по ssh,
раскрашивает grc некоторые команды
и еще куча плюшек алиасами
.zshrc
autoload -U compinit
compinit -C
zstyle ':completion:*' menu yes select
hosts=(example.com example.net example.org)
zstyle '*' hosts $hosts
#hosts=(`cat ~/.ssh/known_hosts | tr, " " | awk '{ print $1 }'`)
#zstyle '*' hosts $hosts
#zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns `cat /etc/passwd | awk -F ":" '{ if($3<1000) print $1 }'\
zstyle ':completion:*:processes' command 'ps xua'
zstyle ':completion:*:processes' sort false
zstyle ':completion:*:processes-names' command 'ps xho command'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
eval `dircolors`
alias ls='ls --color=auto'
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
export GREP_OPTIONS='--color=auto'
export GREP_COLOR='1;32'

if [ -f /usr/bin/grc ]; then
alias ping=«grc --colour=auto ping»
alias traceroute=«grc --colour=auto traceroute»
alias make=«grc --colour=auto make»
alias diff=«grc --colour=auto diff»
alias cvs=«grc --colour=auto cvs»
alias netstat=«grc --colour=auto netstat»
fi

autoload promptinit
promptinit
prompt walters

#PS1='%T %m%# '
#PS2='> '
#RPROMPT='%~'

case $TERM in
xterm*|rxvt)
precmd () { print -Pn "\e]0;%n@%m: %~\a" }
preexec () { print -Pn "\e]0;%n@%m: $1\a" }
;;
screen)
precmd () { print -Pn "\033k%~\033\\" }
preexec () { print -Pn "\033k$1\033\\" }
;;
esac
if [ -d ~/bin ]; then
PATH=~/bin:"${PATH}"
fi

setopt autocd
setopt extended_glob
setopt correct

alias sdr=«screen -aAdr»
alias la=«ls -A»
alias ll=«ls -lA»
alias grep='grep --exclude="*.svn*"'

alias mkpasswd=«head -c16 /dev/urandom | xxd -ps»
fix_mp3() { find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1 }
mpg2flv() { ffmpeg -i $1 -ar 22050 -ab 32 -f flv -s 320x240 `echo $1 | awk -F. '{print $1}'`.flv }
mcd() { mkdir $1; cd $1 }
newday() { mcd `date +%F` }
#c() { awk "{ print \$$1 }" }
#svnid() { svn propset svn:keywords "Author Date Id Revision" $1 }
#ignore() { svn propedit svn:ignore. }

bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line

foxmuldercp, в oh-my-zsh есть плагин, который строит дополнение хостов по содержимому ~/.ssh/known_hosts.
в современных вариантах известные хосты в хешах и нечитаемом виде в этом файле лежат, посему такое менюшко местами лучше, чем лезть в конфиг ssh и править отображение этого файлика в другом формате
в современных вариантах известные хосты в хешах и нечитаемом виде в этом файле лежат
Честно говоря никогда не обращал внимание, но у меня хосты в ~/.ssh/known_hosts вполне читаемы.
Это из коробки такой функционал или сами что-то докручивали?
По умолчанию в последних версиях дебиана такое было, напарывался несколько раз, потом товарищ посоветовал сделать такое меню, собственно его конфигом и пользуюсь.
Правда у меня хоты обычно в putty забиты, с сервера на сервер я обычно только scp файло передаю.
Собственно вот:
# use /etc/hosts and known_hosts for hostname completion
[ -r /etc/ssh/ssh_known_hosts ] && _global_ssh_hosts=(${${${${(f)"$(</etc/ssh/ssh_known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _global_ssh_hosts=()
[ -r ~/.ssh/known_hosts ] && _ssh_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_hosts=()
[ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()
hosts=(
  "$_global_ssh_hosts[@]"
  "$_ssh_hosts[@]"
  "$_etc_hosts[@]"
  "$HOST"
  localhost
)
zstyle ':completion:*:hosts' hosts $hosts
Кроме более хитрого автодополнения в bash всё перечисленное делается так же или чуть-чуть сложнее.
То есть даже автооткрытие файлов по типу можно сделать через command_not_found_handle.
Да и bash обычно уже поставлен, а zsh ставить надо.

Что, однако, не отменяет годности zsh.
bash отличная оболочка, но эксперимента ради можно поставить zsh. В последнем, кстати, можно иначе работать с перенаправлением ввода. Например, без cat вывести содержимое файла:

~ % < file.sh
#!/bin/bash

w=("I" "like" "archlinux")
for((i=0; i < 3; i++))
do
  echo ${w[$i]}
done

bahs так не умеет, хотя это в сущности мелочи, но вводить с клавиатуры приходится меньше ;)

cat выводит содержимое файла целиком, less — постранично. В данном случае первое.
Уверены? Лично у меня < file пускает file на less.
Да less это. Просто пример слишком короткий, поэтому разницы между cat и less нет (практически).
У меня пускает more. Причём даже на /dev/null, который имеет нулевой размер. В документации это описано как «shows the contents of file on standard output, with paging if that is a terminal.», ни слова о том, какая программа делает paging или как это настроить.
UFO just landed and posted this here
Вы думаете, у меня не less в $PAGER?
UFO just landed and posted this here
less приблизительно тоже самое что more
UFO just landed and posted this here
это от переменной PAGER зависит, у меня вот most, а в некоторых скриптах cat
Эксперимент показывает, что нет.
(zyx-desktop:zyx:~/.vam/powerline) % strace -e 'execve' zsh -c 'export PAGER=/usr/bin/less; < /dev/null'
execve("/bin/zsh", ["zsh", "-c", "export PAGER=/usr/bin/less; < /d"...], [/* 64 vars */]) = 0
execve("/bin/more", ["more"], [/* 64 vars */]) = 0
+++ exited with 0 +++
извиняюсь. у меня просто READNULLCMD=${PAGER}, так что зависит от $READNULLCMD
Самое интересное, что эта переменная упомянута и в предложении до, и в предложении после процитированного мною ранее.
Вводить меньше всего на одну клавишу («Shift»+«<» vs «c», «a», «t»). Проще настроить alias, особенно учитывая, что в dvorak «a» единственная находится под левой рукой (то есть имеем оптимальную последовательность правая‐левая‐правая, причём две клавиши в основном ряду, в отличие от Shift и <).
Заточить можно все, это правда. Но с появлением «oh-my-zsh» zsh вдруг оказался впереди по ключевому признаку: из коробки есть все, что нужно. Я давно не смотрел на баш, но, вроде бы, он не сумеет из коробки рассказать мне в PS1 про мой git и rvm. А zsh рад стараться:


Обратите внимание на бранч и статус гита в промпте, и на текущий набор рубигемов.
Это смотря что подразумевается под из коробки:
image
Пара строчек source и еще две на добавление rvm-prompt и __git_ps1
Под «из коробки» подразумевается «накатил, поехал» ;-)

Я умею git clone MYSETTINGS, да. Но это нужно гит сначала накатить, или из дропбокса вытаскивать и распаковывать…

Но в целом, я согласен, что разницы особой нет (кроме таб-таб, конечно). Привычка — сильнее разницы.
поэтому на bash — скрипты, а в zsh — работать
Дело вкуса, конечно, но мне лично удобно, когда скрипт — ровно то, что я бы набирал в консоли + некоторые вещи вроде function()
UFO just landed and posted this here
А кроме того — переназначение предустановленных значений.
меня устраивает bash и я не интересуюсь другими *sh.
ЧЯДНТ?
Все правильно делаете.
Устраивает bash – пользуйтесь на здоровье.
UFO just landed and posted this here
Раз уж зашёл разговор о раскрашивании
cat_via_pygmentize() {
    if [ ! -x $(which pygmentize) ]; then
        echo package \'pygmentize\' is not installed!
        exit -1
    fi

    if [ $# -eq 0 ]; then
        pygmentize -g $@
    fi
     
    for FNAME in $@
    do
        filename=$(basename "$FNAME")
        lexer=`pygmentize -N \"$filename\"`
        if [ "Z$lexer" != "Ztext" ]; then
            pygmentize -l $lexer "$FNAME"
        else
            pygmentize -g "$FNAME"
        fi

    done
}

alias o='cat_via_pygmentize'


Подсвечивает абсолютно любой вывод
И уж, конечно, ни один пользователь не оспорит удобство использования истории команд. Здесь zsh ничем особенным не отличается от bash.

Ну вы забыли две достаточно приятных особенности:
1) up-line-or-search: поиск в истории только текущей команды. Например, если набрать `ls` и нажать стрелку вверх, то будет искать по истории только среди команд, начинающихся с ls
2) История одна для всех экземпляров zsh. Это значит, что если вы что-то делали в одном окне\вкладке\ssh-сессии, и хотите повторить в другом, то вы можете легко это сделать. В отличие, от bash, где история непонятно как склеивается. Совершенно не факт, что набранные вами в этой сессии команды в ней окажутся.

Лично для меня пункт 2) был весьма существенным при решении о миграции на zsh
Если иметь
"\C-n": history-search-forward
"\C-p": history-search-backward
в .inputrc то по <C-n>/<C-p> получите абсолютно то же самое в bash. Стрелки — зло.

Второе же существенно.
Стрелки зло — факт, но никак не могу отвыкнуть пока на 100%…
А зачем переопределять? По умолчанию же ctrl+R/ctrl+shift+R.
Разве <C-r> — не поиск по‐умолчанию? А как работает <C-S-r> я вообще не представляю: в xterm это то же, что и <C-r> (во всяком случае, с настройками по‐умолчанию). В urxvt тоже. В konsole (yakuake) это вообще клавиатурное сочетание, закрывающее вкладку (правда, не факт, что стандартное).
Нажатие C-r включает интерфейс поиска. Повторное C-r перемещает по результатам назад, C-S-r — вперёд.
При чём тут поиск? Когда вы нажимаете c<C-p> с этими настройками вы получаете что‐то вроде cat file | grep …: то есть, строку, начинающуюся на c из истории. c уже набрана. Также вы получаете не строку, содержащую c. И не строку, совпадающую с шаблоном. И не что‐то ещё.

Кроме того, в каком терминале у вас работает <C-S-r>? Терминалы вообще обычно посылают одну и ту же последовательность и для того, и для другого.
А, я тогда не верно понял.

Интересно, C+S+r у меня сейчас не работает. Хотя помню, что работал, комбинацией этой я пользовался.
На самом деле zsh – потрясающая оболочка, которая реально увеличивает производительность.
Топик получился поверхностным, но, наверное, он таким и должен быть для только что состоявшихся свитчеров или тех, кто над этим задумывается.

Прийдется свою статью запилить :)
Кстати в догонку — мой красивый .screenrc — куда ж без него:
— caption always "%{=s gk}%d.%m.%Y%{+b i.} %0c %{=s y.}%-w%{+bu i.}%n %t%{-}%+w%<"
лучше хардстатус использовать, а то такой каптион при разбиении на регионы несколько раз явно не нужен
Изначально он ориентирован на любые терминалы — не только поддерживающие 256 цветов, поэтому некоторые цвета могут выглядеть не так, как нам нравится, но это можно исправить. Главный файл с настройками цветов располагается по пути:
/usr/share/zsh/plugins/zsh-syntax-highlight/highlighters/main/main-highlighter.zsh
Измените цвета так, как вам нужно.
Пример:

: ${ZSH_HIGHLIGHT_STYLES[hashed-command]:=fg=153}
…


Ни в коем случае не делайте это сами и не никогда рекомендуйте никому изменять файлы, контролируемые пакетным менеджером. Скажите, вы разве никогда не видели раньше : ${VAR:=val}? Эта конструкция буквально означает «записать val в переменную VAR, если последняя пуста или не определена». То есть не надо ничего менять в /usr/share, просто определите эти переменные до строки
source /usr/share/zsh/site-contrib/zsh-syntax-highlighting.zsh
и всё.

Точнее, не переменные, а ассоциативный массив с нужными ключами:
typeset -A ZSH_HIGHLIGHT_STYLES
ZSH_HIGHLIGHT_STYLES=(
        'alias'           'fg=green,bold'
        'builtin'         'fg=yellow'
        'function'        'fg=blue,bold'
        'command'         'fg=green'
        'hashed-commands' 'fg=green,underline'
        'precommand'      'fg=cyan'
        'path'            'underline'
)

C удовольствием бы воспользовался всеми этими вкусностями, но, увы, он запускается гораздо медленнее чем баш
Использую zsh + oh-my-zsh и да он запускается ощутимо медленней чем баш. Можете чуть поподробней про кеш? Что rtfm?
… а bash, в свою очередь, запускается ощутимо медленнее, чем mksh.
а за mksh thanks, сейчас щупаю Кстати, если с ним работаете, не cкинете куда нибудь свой mkshrc?
Tonik, можно настроить кэш для автокомплита и прекомпилировать функции. Покурите доки, я просто давно с этим возился и точнее не подскажу.

Плюс, если используете oh-my-zsh, можно пробежаться по файлам и отключить лишние вызовы compinit.

Хотя, лично для меня это не проблема — консоль открывается один раз при буте системы секунды за 2, а новые табы в ней уже открываются практически моментально.
Есть еще неплохая вещь grml-zsh-config
Интересно, почему разработчики сразу не включат в zsh автодополнение, ведь это один из его козырей. Было было логично пользоваться этим из коробки.
Sign up to leave a comment.

Articles