# zshrc inspiré de celui de la formation debian de VIA # modifié par David_5_1 # http://formation-debian.via.ecp.fr/ # Ajouts depuis le wiki de archlinux http://wiki.archlinux.fr/Zsh # et depuis http://doc.ubuntu-fr.org/zsh # et depuis http://zsh.sourceforge.net/Guide/zshguide.html # utilisation de https://github.com/zsh-users/zsh-syntax-highlighting # adapté et amélioré par lhark # Ajout de */sbin au PATH (pour ifconfig en particulier) export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:~/bin # Get rc dir path RC_PATH=$(dirname "$(readlink -f ${(%):-%x})") # Import utility functions . $RC_PATH/functions # Check for rc updates (check_rc_update&) 2> /dev/null # Check for system updates (check_sys_update&) 2> /dev/null # Configuration for virtualenv export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh > /dev/null 2>&1 source /usr/bin/virtualenvwrapper.sh > /dev/null 2>&1 # Configuration for ROS source /opt/ros/indigo/setup.zsh > /dev/null 2>&1 export PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages:$PYTHONPATH export PKG_CONFIG_PATH="/opt/ros/indigo/lib/pkgconfig:$PKG_CONFIG_PATH" # Configuration pour wine alias steam-wine='WINEDEBUG=-all wine ~/.wine/drive_c/Program\ Files/Steam/Steam.exe -no-dwrite >/dev/null 2>&1 &' export WINEDLLOVERRIDES="winemenubuilder.exe=d" # Configuration pour steam sur archlinux alias steam="LD_PRELOAD='/usr/\$LIB/libstdc++.so.6 /usr/\$LIB/libgcc_s.so.1 /usr/\$LIB/libxcb.so.1 /usr/\$LIB/libgpg-error.so' /usr/bin/steam" # Configuration pour minecraft alias minecraft="java -jar $HOME/.minecraft/launcher.jar" # Easy dwm recompile on arch alias redwm='cd ~/aur/dwm-git; updpkgsums; makepkg -fi --noconfirm; killall dwm' # Aliases alias acs='apt-cache search' alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars -h' alias ll='ls -lha' alias less='less --quiet' alias df='df --human-readable' alias du='du --human-readable' # alias mutt='mutt -y' alias upgrade='sudo apt-get update && sudo apt-get -dy dist-upgrade && sudo apt-get dist-upgrade' # alias -g GP='|grep ' alias grep="grep --color" alias ssh='ssh -A' # alias -s txt=cat alias rm='rm -I' alias ipa='ip route && echo && ip address' alias ipr='ip address && echo && ip route' alias which='which -a' # À tester un jour :) # Reference : man zshbuiltins # alias -s ps=gv # Le fameux cd ...etc alias -g ...='../..' alias -g ....='../../..' alias -g .....='../../../..' alias -g ......='../../../../..' alias -g .......='../../../../../..' alias -g ........='../../../../../../..' # Term specific hacks case $TERM in xterm*) preexec () { print -Pn "\e]0;xterm - $1 - ${HOST} - ${PWD}\a" } ;; # Fix broken ssh with st st*) preexec () { print -Pn "\e]0;st - $1 - ${HOST} - ${PWD}\a" } alias ssh='TERM=xterm ssh -A' ;; esac # Demande confirmation pour 'rm *' -> ou unsetopt rm_star_silent # Si on utilise des jokers dans une liste d'arguments, retire les jokers # qui ne correspondent à rien au lieu de donner une erreur setopt null_glob # Autocomplétion ? unsetopt list_ambiguous setopt auto_remove_slash unsetopt glob_dots autoload -U compinit promptinit colors compinit promptinit colors autoload -Uz vcs_info zstyle ':vcs_info:*' enable git cvs svn setopt auto_cd zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' zstyle ':completion:*' max-errors 3 numeric zstyle ':completion:*' use-compctl false # Traite les liens symboliques comme il faut setopt chase_links # !! n'est pas exécuté directement setopt hist_verify # Afficher le temps pris pour exécuter les commandes EXPORTTIME=0 # Points rouges pendant l'autocomplétion COMPLETION_WAITING_DOTS="true" #Heure="%(!,%{%B$fg[red]%}%D{%a %d/%m} %T%{$reset_color%}%b,%D{%a %d/%m} %T)" # Pour recalculer les variables du prompt # Il faut que le signe $ soit échappé ou entre guillemets simples setopt promptsubst prompt_create # Raccourcis claviers à la VIM bindkey -v # ou à la emacs # bindkey -e # Réglages de l'historique HISTSIZE=100000 SAVEHIST=100000 HISTFILE=~/.history HISTTIMEFORMAT="%d/%m %H:%M:%S " setopt hist_ignore_all_dups sharehistory hist_ignore_space # >| doit être utilisés pour pouvoir écraser un fichier déjà existant ; # # le fichier ne sera pas écrasé avec '>' # unsetopt clobber # Afficher «zsh: exit ERREUR» en cas d'erreur ≠ 0 setopt print_exit_value zstyle ':completion:*' auto-description 'specify: %d' zstyle ':completion:*' completer _expand _complete _correct _approximate zstyle ':completion:*' format 'Completing %d' zstyle ':completion:*' group-name '' zstyle ':completion:*' menu select=2 eval "$(dircolors -b)" zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*' list-colors '' zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' zstyle ':completion:*' menu select=long zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s zstyle ':completion:*' use-compctl false zstyle ':completion:*' verbose true zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' # Gestion des touches spéciales pour mon clavier # Pour connaître le code d'une touche, exécuter «cat» typeset -A key # CTRL + flèches bindkey ";5D" beginning-of-line bindkey ";5C" end-of-line bindkey ";5A" up-line-or-history bindkey ";5B" down-line-or-history bindkey "^[[1;5D" beginning-of-line bindkey "^[[1;5C" end-of-line bindkey "^[[1;5A" history-incremental-search-backward bindkey "^[[1;5B" history-incremental-search-forward # Page Up/Down bindkey "^[[5~" history-beginning-search-backward bindkey "^[[6~" history-beginning-search-forward # CTRL + Page UP/Down bindkey "^[[5;5~" beginning-of-buffer-or-history bindkey "^[[6;5~" end-of-buffer-or-history # Origine / Fin (pavé numérique) bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line # Origine / Fin bindkey "^[OH" beginning-of-line bindkey "^[OF" end-of-line # Delete bindkey "[3~" delete-char # Shift-Tab bindkey "^[[Z" reverse-menu-complete # Finally, make sure the terminal is in application mode, when zle is # active. Only then are the values from $terminfo valid. if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then function zle-line-init () { printf '%s' "${terminfo[smkx]}" } function zle-line-finish () { printf '%s' "${terminfo[rmkx]}" } zle -N zle-line-init zle -N zle-line-finish fi # # Stockage des dossiers visités (cd -NUM et dir -v) # DIRSTACKFILE="$HOME/.cache/zsh/dirs" # if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then # dirstack=( ${(f)"$(< $DIRSTACKFILE)"} ) # [[ -d $dirstack[1] ]] && cd $dirstack[1] # fi # chpwd() { # print -l $PWD ${(u)dirstack} >>$DIRSTACKFILE # } DIRSTACKSIZE=20 setopt autopushd pushdsilent pushdtohome # Remove duplicate entries setopt pushdignoredups # This reverts the +/- operators. setopt pushdminus autoload -U zsh-mime-setup autoload -U zsh-mime-handler zsh-mime-setup zstyle ':mime:*' mailcap /etc/mailcap # video/*; /usr/bin/mplayer '%s'; # text/*; less '%s'; # audio/*; /usr/bin/mplayer '%s'; export EDITOR=/usr/bin/vim # Crée un cache des complétion possibles # très utile pour les complétion qui demandent beaucoup de temps # comme la recherche d'un paquet aptitude install moz zstyle ':completion:*' use-cache on zstyle ':completion:*' cache-path ~/.zs # Des couleurs pour la complétion cf kill -9 zmodload zsh/complist setopt extendedglob zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31" setopt correct # Syntax coloration for man man() { env \ LESS_TERMCAP_mb=$(printf "$fg_bold[red]") \ LESS_TERMCAP_md=$(printf "$fg_bold[red]") \ LESS_TERMCAP_me=$(printf "$reset_color") \ LESS_TERMCAP_se=$(printf "$reset_color") \ LESS_TERMCAP_so=$(printf "$bg[black]$fg[yellow]") \ LESS_TERMCAP_ue=$(printf "$reset_color") \ LESS_TERMCAP_us=$(printf "$fg_bold[blue]") \ man "$@" } # source ~/.zs/zsh-syntax-highlighting.zsh # exec 2>>(while read line; do # print '\e[91m'${(q)line}'\e[0m' > /dev/tty; print -n $'\0'; done &) # Totalement indispensable mais tellemnent chiant que je l'ai viré au bout de 2 # heures :) # if [ $HOST != "sinquin" ]; then # (play -q -n synth sine F2 sine C3 remix - fade 0 4 .1 norm -4 bend # 0.5,2399,2 fade 0 4.0 0.5 &) # fi # ZSH syntax highlighting : /!\ keep at the bottom ! source ${RC_PATH}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh