Category Archives: Linux

Пример конфигурации ZSH

Думаю, многие знают о существовании такого замечательного шелла, как zsh :)

О его достоинствах можно почитать, например, здесь. Подробных статей о настройке также полно. Цель данного поста – показать пример моего конфигурационного файла “для ленивых”, а также оставить себе некую памятку, чтобы в случае чего быстро восстановить конфиг на другой машине.

Итак, cat ~/.zshrc

#Сокращённый ввод имён директорий (/u/l/p вместо /user/local/ports)
autoload -U compinit
compinit
setopt autocd

#Выключить пищалку
setopt No_Beep

#Корректировка ошибок при вводе команды
setopt CORRECT_ALL
SPROMPT=”Вы хотели ввести %r вместо %R? ([Y]es/[N]o/[E]dit/[A]bort) ”

#История
setopt APPEND_HISTORY
setopt HIST_IGNORE_SPACE
setopt HIST_REDUCE_BLANKS
setopt HIST_IGNORE_ALL_DUPS
HISTFILE=~/.zhistory
SAVEHIST=5000
HISTSIZE=5000

#Приглашение
autoload promptinit
promptinit
prompt fade blue    # здесь я использую уже готовую тему

#Поиск команд в истории
autoload -U predict-on
zle -N predict-on
zle -N predict-off
bindkey “^X^Z” predict-on   # Включить
bindkey “^Z” predict-off       # Выключить

#Алиасы
alias -g L=’| less’
alias -g G=’| grep’
alias -g GI=’|grep -i’
alias -g H=’| head’
alias -g T=’| tail’
alias -g S=’| sort’
alias -g SU=’| sort -u’
alias -g P=’| patch -p1′
alias -g PD=’| patch -p1 –dry-run’
alias -g WC=’| wc -l’
alias -g IK=’| iconv -c -f koi8r -t cp1251′
alias -g IU=’| iconv -c -f utf8 -t cp1251′
alias -g MF=’mount /mnt/flash’
alias -g UF=’umount /mnt/flash’

alias -g GP=’ping google.com’    #проверка соединения с интернетом ;)

alias -s {avi,mpeg,mpg,mov,m2v}=mplayer
alias -s {odt,doc,sxw,rtf}=openoffice.org
alias -s {ogg,mp3,wav,wma}=mpg123

alias ls=”ls -FG”    # цветной ls

hosts=(‘hostname’ ftp.freebsd.org leonidov.su google.com)    # часто используемые хосты

#SSH – автозаполнение хостов, юзеров
hosts=(${${${(f)”$(<$HOME/.ssh/known_hosts)”}% %\ *}% %,*})    # (!!!) пробелы между “% %” убрать. (!!!)
zstyle ‘:completion:*:hosts’ hosts $hosts
zstyle ‘:completion:*:(ssh|scp):*’ tag-order ‘! users’

#Заголовок терминала (в данном случае мы показываем текущую директорию)
case $TERM in
xterm* | rxvt)
precmd(){print -Pn “\e]0;%n@%m: %~\a”}
;;
esac

#Пути к манам
manpath=”/usr/share/man:/usr/local/man:/usr/X11R6/man”
export MANPATH

#Опции “меню”
zmodload zsh/complist
setopt menucomplete
zstyle ‘:completion:*’ menu yes select
#удобный kill и killall
zstyle ‘:completion:*:processes’ command ‘ps -xuf’
zstyle ‘:completion:*:processes’ sort false
zstyle ‘:completion:*:processes-names’ command ‘ps xho command’
#Настройки цвета меню (это одна строка!):
zstyle ‘:completion:*:default’ list-colors
‘no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;
35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;31:’
# конец строки!
#Комбинации клавиш:
bindkey -M menuselect ” ” accept-and-menu-complete
bindkey -M menuselect “^H” undo

#Настройка нормальной работы кнопок Home, End, Delete и т.п.
autoload zkbd
[[ ! -d ~/.zkbd ]] && mkdir ~/.zkbd
[[ ! -f ~/.zkbd/$TERM ]] && zkbd
source ~/.zkbd/$TERM

[[ -n ${key[Backspace]} ]] && bindkey “${key[Backspace]}” backward-delete-char
[[ -n ${key[Insert]} ]] && bindkey “${key[Insert]}” overwrite-mode
[[ -n ${key[Home]} ]] && bindkey “${key[Home]}” beginning-of-line
[[ -n ${key[PageUp]} ]] && bindkey “${key[PageUp]}” up-line-or-history
[[ -n ${key[Delete]} ]] && bindkey “${key[Delete]}” delete-char
[[ -n ${key[End]} ]] && bindkey “${key[End]}” end-of-line
[[ -n ${key[PageDown]} ]] && bindkey “${key[PageDown]}” down-line-or-history
[[ -n ${key[Up]} ]] && bindkey “${key[Up]}” up-line-or-search
[[ -n ${key[Left]} ]] && bindkey “${key[Left]}” backward-char
[[ -n ${key[Down]} ]] && bindkey “${key[Down]}” down-line-or-search
[[ -n ${key[Right]} ]] && bindkey “${key[Right]}” forward-char

В итоге должно получиться что-то вроде этого.