Comments 124
за zsh-syntax-highlighting спасибо!
не подскажите как им вводимую команду разукрасить? а то до нажатия на бэкспейс не хочет раскрашивать.
К слову сказать, горячие клавиши в баше имеются (bind, а узнать код клавиши можно через read. так же в обоих шелах можно выставить vi mode — set -o vi ), но вот хоткееев с префиксами в баше кажется нет…
распаковка архивов аналогична и для баша, выкидывание повторений и прочего хлама из истории в баше тоже имеется
не подскажите как им вводимую команду разукрасить? а то до нажатия на бэкспейс не хочет раскрашивать.
К слову сказать, горячие клавиши в баше имеются (bind, а узнать код клавиши можно через read. так же в обоих шелах можно выставить vi mode — set -o vi ), но вот хоткееев с префиксами в баше кажется нет…
распаковка архивов аналогична и для баша, выкидывание повторений и прочего хлама из истории в баше тоже имеется
+3
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
— .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
0
Выходит, zsh может заменить архиватор?
Это простейшая функция. Даже близко не архиватор.
Насколько мне известно, в bash горячие клавиши изменению не подлежат. Впрочем, не исключено, что я ошибаюсь. Это известные всем линуксоидам клавиши редактора emacs. Они взяты за основу и будут работать на любой машине, где установлен bash.
Тоже можно включить vi-like режим.
В случае с bash, надо создать файл ~/.inputrc и добавить в него следующее:
set editing-mode vi set keymap vi
+1
Это простейшая функция. Даже близко не архиватор.перефразирую, эти две функции унифицируют некоторый функции разных упаковщиков/распаковщиков (почти как atool)
0
… или же переопределить клавиши вручную, почти так же (совсем так же?) как и в zsh.
0
Я вот пробовал включать vi режим. Жутко неудобно. Полчаса искал как же теперь делать поиск, который раньше был на ctrl-r.
0
не подскажите как им вводимую команду разукрасить? а то до нажатия на бэкспейс не хочет раскрашивать.вставил после определения цветов и наступила благодать
0
UFO just landed and posted this here
А ещё лучше
/usr/bin/env python
:)+3
С чего бы? Портабельность не аргумент (лично для меня), так как скрипты пишу для себя.
0
эм, насколько я знаю во многих системах — /bin/sh -> алиас к /bin/bash
0
А в debian, насколько я помню, к /bin/dash. Может уже изменили, но раньше такое точно было. Судя по списку файлов данного пакета — так и не изменили.
+2
Что-то мало как-то всего. Я ожидал чего-то большего. Ну и я просто оставлю это здесь.
+1
Да без oh-my-zsh zsh не zsh!
0
Расскажите, пожалуйста про grml и его отличия от oh-my-zsh. Сижу на oh-my-zsh, но любопытно стоит ли мигрировать?
0
oh-my-zsh модульный и сильно кастомизируемый, а grml просто хорошо вылизанный конфиг. Я два раза пытался пересесть на oh-my-zsh, но оба раза не сумел его настроить так, что бы он не выглядел аляповато и был так же удобен. К сожалению, сейчас я уже не вспомню, что конкретно меня не устроило.
Попробуйте, это же не систему переставить. Не понравится — вернётесь.
Попробуйте, это же не систему переставить. Не понравится — вернётесь.
0
Специально залогинился чтобы написать про это :) сам использую, но грешу тем, что половины функционала не знаю. Просто установил, чуть подкрутил тему оформления и всё.
А вот строчки из примера про zsh-syntax-highlighting, не заработали :(
А вот строчки из примера про zsh-syntax-highlighting, не заработали :(
0
ibex, а ваш терминал понимает 256 цветов? Укажите ему это, затем в файле настроек измените значения на свои, используя хотя бы вот эту таблицу цветов. Выходим из терминала и снова входим в него, всё должно работать.
0
Спасибо, почитаю на досуге. Пока не вникал в детали, но grc и просто разукрашенный вывод работает.
0
zsh без собственных настроек лучше не использовать вовсе.
Вот оно чо! Несколько раз пытался использовать zsh, но как-то особых плюсов не нашёл, что-то удобней, что-то нет, а в ubuntu как-то показалось, что zsh из коробки меньше команд знает, чем bash-competitions, а аналогичного пакета не нашёл.
Вот оно чо! Несколько раз пытался использовать zsh, но как-то особых плюсов не нашёл, что-то удобней, что-то нет, а в ubuntu как-то показалось, что zsh из коробки меньше команд знает, чем bash-competitions, а аналогичного пакета не нашёл.
0
VolCh, попробуйте habrahabr.ru/post/162339/#comment_5574605
+1
Я поставил oh-my-zsh, потом включил в нём тему «random», чтобы каждый раз бралась новая (а там их более сотни) — и оно меня теперь радует.
О многих возможностях prompt'а (которые реально удобны!) я даже не подозревал.
О многих возможностях prompt'а (которые реально удобны!) я даже не подозревал.
+1
Например, в 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.
0
> работало нормально, если в скрипте прописать #!/bin/bash
Юникс-сообществом башизмы порицаются.
Юникс-сообществом башизмы порицаются.
+1
Только
/bin/sh
, только хардкор?0
Вы так говорите это, как будто бы так сложно писать на sh.
0
Несложно. Но zsh дает вам больше возможностей.
0
Зачем?
-1
Это позволяет мне работать комфортнее и быстрее.
-1
Засчёт тех, кто будут ваши скрипты, мучаясь, запускать. Нет уж, спасибо.
-1
Засчёт тех, кто будут ваши скрипты, мучаясь, запускать.Додумывать за меня ваше хобби или случайно получилось?
Мысль о том, что скрипты пишутся не только для кого-то, но и для решения собственных задач видимо вас не посещала.
0
Ну понятно, да. Write-only style. Мысль о том, что Ваши скрипты, возможно, кому-то пригодятся и будут использоваться, видимо, Вам не посещала. Это только другие — вот же ж дураки! — пишут скрипты, которыми пользуются тысячи. И поделом им, пусть дальше пишут на POSIX shell.
-1
Мысль о том, что Ваши скрипты, возможно, кому-то пригодятся и будут использоваться, видимо, Вам не посещала«Собственные задачи», вам эта фраза хоть о чем-то говорит?
По вашей логике в мире должен быть один единственный «язык программирования». Отвечать на остальное — это скатываться во флейм и троллинг.
-1
Какой смысл писать скрипты, которые будут работать у меня и ещё двух с половиной человек?
0
habrahabr.ru/post/162339/#comment_5578123
Фразу про суслика помните?
Фразу про суслика помните?
0
Примерно такой же, как писать на пейтоне, которого в стандартной поставке LTS обычно нет.
Давайте уж тогда и от библиотек откажемся, заодно. Правда, ассемблер и коды тоже не панацея, обязательно придумают какой-нибудь mainframe.
Давайте уж тогда и от библиотек откажемся, заодно. Правда, ассемблер и коды тоже не панацея, обязательно придумают какой-нибудь mainframe.
-1
Просто он запускается из-под баш на самом деле. zsh запускает bash и передаёт ему скрипт параметром. По крайней мере должен, если zsh не включает какой-то режим совместимости вопреки явному указанию интерпретатора в скрипте.
+2
Нет, не работает. Запускать надо используя
zsh scriptname
, иначе запуститься bash. Зато в zsh работаетfor ((i=0; i<3; i++)) {
echo $i
}
0
на многих коммерческих проектах обычно используется The Korn Shell. хотя он и старый, и в нем нет многих красот, но он существует под все Unix платформы и это его главное преимущество
+1
># включить историю команд
>setopt APPEND_HISTORY
Разбавили статью переводческим юмором, молодец.
У меня по zsh другой вопрос — как имитировать поведение опции cdspell из баша?
Там при указании неправильного пути шелл сам молча исправляет путь, не отвлекая меня вопросами Да/Исправить/Отмена.
Т.е. если я в спешке ввёл /otp, то хотелось бы чтобы шелл молча перекинул меня в /opt
Это отдельная опция, не связанная с автокомплитом, так что про него писать не надо.
>setopt APPEND_HISTORY
Разбавили статью переводческим юмором, молодец.
У меня по zsh другой вопрос — как имитировать поведение опции cdspell из баша?
Там при указании неправильного пути шелл сам молча исправляет путь, не отвлекая меня вопросами Да/Исправить/Отмена.
Т.е. если я в спешке ввёл /otp, то хотелось бы чтобы шелл молча перекинул меня в /opt
Это отдельная опция, не связанная с автокомплитом, так что про него писать не надо.
+1
что это за опция?
0
Исправляет опечатки, если может.
Например по cd /avr/logs автоматически перейдет в /var/log.
Например по cd /avr/logs автоматически перейдет в /var/log.
0
/home/mulder/.zshrc:71: command not found: shopt
> apt-cache search shopt
>
…
нету в дебиане такого
> apt-cache search shopt
>
…
нету в дебиане такого
0
как имитировать поведение опции cdspell из баша?
/home/mulder/.zshrc
К. О. спешит сообщить, что пробовать использовать shopt имеет смысл в баше.
0
foxmuldercp, извините, ступил, это опция для bash'a, a не zsh.
zsh, ЕМНИП, так не умеет.
zsh, ЕМНИП, так не умеет.
0
Ну конечно, не умеет, ага
# 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, и про всё остальное тоже.
# 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, и про всё остальное тоже.
0
>Ну конечно, не умеет, ага
Исправляет с запросом. Вы читали мой вопрос? cdspell в баше видели?
Если в вопросе не волокёшь, то не надо информационный шум создавать, посидите, почитайте молча, что умные люди пишут
Исправляет с запросом. Вы читали мой вопрос? cdspell в баше видели?
Если в вопросе не волокёшь, то не надо информационный шум создавать, посидите, почитайте молча, что умные люди пишут
0
cubuanic
Но работает также по табу. Введя
Ну конечно, не умеет, агаОно меняет, но по табу, а cdspell в баше меняет автоматом.
А ещё вот так умеет:Это называется globbing, вещь крутейшая.
tail -f /v/l/a
экспандится в
tail -f /var/log/all.log
Но работает также по табу. Введя
tail -f /v/l/a
и нажав enter без таба вы получитеtail: /v/l/a: No such file or directory
0
Спасибо за статью.
> Запускаем браузер, жмём Ctrl+O, выбираем файл и просматриваем его.
Ну это Вы преувеличили… $ app
> Запускаем браузер, жмём Ctrl+O, выбираем файл и просматриваем его.
Ну это Вы преувеличили… $ app
0
Кстати, по поводу небольших плюшек в .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
+2
Извиняюсь, нужно было прокомментировать. Дело в том, что zsh умеет делать автокомплит из истории по команде. Например, если я вводил vim ~/.zshrc ранее, то потом я могу ввести только vim, нажать кнопку вверх и он сам мне подставит продолжение строки из истории. Кнопки page-up, page-down служат привычной навигацией по истории. Назначение всех других клавиш в общем то достаточно понятно.
Манипуляции с pkgfile тоже довольно понятны арчеводам — если я пытаюсь запустить бинарник, которого содержится в неустановленном пакете, то мне zsh подскажет, где этот бинарник можно найти.
Манипуляции с pkgfile тоже довольно понятны арчеводам — если я пытаюсь запустить бинарник, которого содержится в неустановленном пакете, то мне zsh подскажет, где этот бинарник можно найти.
+2
мой конфиг
дополняет хосты из списка при попытке подключения по ssh,
раскрашивает grc некоторые команды
и еще куча плюшек алиасами
дополняет хосты из списка при попытке подключения по 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
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
0
foxmuldercp, в oh-my-zsh есть плагин, который строит дополнение хостов по содержимому ~/.ssh/known_hosts.
0
в современных вариантах известные хосты в хешах и нечитаемом виде в этом файле лежат, посему такое менюшко местами лучше, чем лезть в конфиг ssh и править отображение этого файлика в другом формате
+1
в современных вариантах известные хосты в хешах и нечитаемом виде в этом файле лежатЧестно говоря никогда не обращал внимание, но у меня хосты в ~/.ssh/known_hosts вполне читаемы.
Это из коробки такой функционал или сами что-то докручивали?
0
Собственно вот:
# 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
0
Кроме более хитрого автодополнения в bash всё перечисленное делается так же или чуть-чуть сложнее.
То есть даже автооткрытие файлов по типу можно сделать через
Да и bash обычно уже поставлен, а zsh ставить надо.
Что, однако, не отменяет годности zsh.
То есть даже автооткрытие файлов по типу можно сделать через
command_not_found_handle
.Да и bash обычно уже поставлен, а zsh ставить надо.
Что, однако, не отменяет годности zsh.
0
bash отличная оболочка, но эксперимента ради можно поставить zsh. В последнем, кстати, можно иначе работать с перенаправлением ввода. Например, без cat вывести содержимое файла:
bahs так не умеет, хотя это в сущности мелочи, но вводить с клавиатуры приходится меньше ;)
~ % < file.sh
#!/bin/bash
w=("I" "like" "archlinux")
for((i=0; i < 3; i++))
do
echo ${w[$i]}
done
bahs так не умеет, хотя это в сущности мелочи, но вводить с клавиатуры приходится меньше ;)
0
Это по-моему не cat, а less.
0
cat выводит содержимое файла целиком, less — постранично. В данном случае первое.
0
Уверены? Лично у меня < file пускает file на less.
0
Да less это. Просто пример слишком короткий, поэтому разницы между cat и less нет (практически).
0
У меня пускает more. Причём даже на /dev/null, который имеет нулевой размер. В документации это описано как «shows the contents of file on standard output, with paging if that is a terminal.», ни слова о том, какая программа делает paging или как это настроить.
0
Ваша правда, объёмный файл мне пустило в постраничный вывод
0
это от переменной PAGER зависит, у меня вот most, а в некоторых скриптах cat
0
Эксперимент показывает, что нет.
(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 +++
0
Вводить меньше всего на одну клавишу («Shift»+«<» vs «c», «a», «t»). Проще настроить alias, особенно учитывая, что в dvorak «a» единственная находится под левой рукой (то есть имеем оптимальную последовательность правая‐левая‐правая, причём две клавиши в основном ряду, в отличие от Shift и <).
0
Заточить можно все, это правда. Но с появлением «oh-my-zsh» zsh вдруг оказался впереди по ключевому признаку: из коробки есть все, что нужно. Я давно не смотрел на баш, но, вроде бы, он не сумеет из коробки рассказать мне в PS1 про мой git и rvm. А zsh рад стараться:
Обратите внимание на бранч и статус гита в промпте, и на текущий набор рубигемов.
Обратите внимание на бранч и статус гита в промпте, и на текущий набор рубигемов.
+2
Это смотря что подразумевается под из коробки:
Пара строчек source и еще две на добавление rvm-prompt и __git_ps1
Пара строчек source и еще две на добавление rvm-prompt и __git_ps1
0
поэтому на bash — скрипты, а в zsh — работать
+1
UFO just landed and posted this here
меня устраивает bash и я не интересуюсь другими *sh.
ЧЯДНТ?
ЧЯДНТ?
+2
Раз уж зашёл разговор о раскрашивании
Подсвечивает абсолютно любой вывод
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'
Подсвечивает абсолютно любой вывод
0
И уж, конечно, ни один пользователь не оспорит удобство использования истории команд. Здесь zsh ничем особенным не отличается от bash.
Ну вы забыли две достаточно приятных особенности:
1) up-line-or-search: поиск в истории только текущей команды. Например, если набрать `ls` и нажать стрелку вверх, то будет искать по истории только среди команд, начинающихся с ls
2) История одна для всех экземпляров zsh. Это значит, что если вы что-то делали в одном окне\вкладке\ssh-сессии, и хотите повторить в другом, то вы можете легко это сделать. В отличие, от bash, где история непонятно как склеивается. Совершенно не факт, что набранные вами в этой сессии команды в ней окажутся.
Лично для меня пункт 2) был весьма существенным при решении о миграции на zsh
+3
Если иметь
Второе же существенно.
"\C-n": history-search-forward
"\C-p": history-search-backward
в .inputrc то по <C-n>
/<C-p>
получите абсолютно то же самое в bash. Стрелки — зло.Второе же существенно.
+2
Стрелки зло — факт, но никак не могу отвыкнуть пока на 100%…
0
А зачем переопределять? По умолчанию же ctrl+R/ctrl+shift+R.
+1
Разве
<C-r>
— не поиск по‐умолчанию? А как работает <C-S-r>
я вообще не представляю: в xterm это то же, что и <C-r>
(во всяком случае, с настройками по‐умолчанию). В urxvt тоже. В konsole (yakuake) это вообще клавиатурное сочетание, закрывающее вкладку (правда, не факт, что стандартное).0
Нажатие C-r включает интерфейс поиска. Повторное C-r перемещает по результатам назад, C-S-r — вперёд.
+1
При чём тут поиск? Когда вы нажимаете
Кроме того, в каком терминале у вас работает
c<C-p>
с этими настройками вы получаете что‐то вроде cat file | grep …
: то есть, строку, начинающуюся на c
из истории. c
уже набрана. Также вы получаете не строку, содержащую c. И не строку, совпадающую с шаблоном. И не что‐то ещё.Кроме того, в каком терминале у вас работает
<C-S-r>
? Терминалы вообще обычно посылают одну и ту же последовательность и для того, и для другого.0
На самом деле zsh – потрясающая оболочка, которая реально увеличивает производительность.
Топик получился поверхностным, но, наверное, он таким и должен быть для только что состоявшихся свитчеров или тех, кто над этим задумывается.
Прийдется свою статью запилить :)
Топик получился поверхностным, но, наверное, он таким и должен быть для только что состоявшихся свитчеров или тех, кто над этим задумывается.
Прийдется свою статью запилить :)
+2
Кстати в догонку — мой красивый .screenrc — куда ж без него:
— caption always "%{=s gk}%d.%m.%Y%{+b i.} %0c %{=s y.}%-w%{+bu i.}%n %t%{-}%+w%<"
—
— caption always "%{=s gk}%d.%m.%Y%{+b i.} %0c %{=s y.}%-w%{+bu i.}%n %t%{-}%+w%<"
—
0
Изначально он ориентирован на любые терминалы — не только поддерживающие 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'
)
+2
C удовольствием бы воспользовался всеми этими вкусностями, но, увы, он запускается гораздо медленнее чем баш
0
Кеш используете?
0
Использую zsh + oh-my-zsh и да он запускается ощутимо медленней чем баш. Можете чуть поподробней про кеш? Что rtfm?
0
… а bash, в свою очередь, запускается ощутимо медленнее, чем mksh.
0
Tonik, можно настроить кэш для автокомплита и прекомпилировать функции. Покурите доки, я просто давно с этим возился и точнее не подскажу.
Плюс, если используете oh-my-zsh, можно пробежаться по файлам и отключить лишние вызовы compinit.
Хотя, лично для меня это не проблема — консоль открывается один раз при буте системы секунды за 2, а новые табы в ней уже открываются практически моментально.
Плюс, если используете oh-my-zsh, можно пробежаться по файлам и отключить лишние вызовы compinit.
Хотя, лично для меня это не проблема — консоль открывается один раз при буте системы секунды за 2, а новые табы в ней уже открываются практически моментально.
0
Есть еще неплохая вещь grml-zsh-config
+1
Интересно, почему разработчики сразу не включат в zsh автодополнение, ведь это один из его козырей. Было было логично пользоваться этим из коробки.
0
Лучшее в shell — стандартность
0
Sign up to leave a comment.
zsh и bash: что выбрать