rc/zshrc
2019-04-11 10:29:31 +02:00

279 lines
9.9 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
# Uncomment this line for perfomance analysis
#zmodload zsh/zprof
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:~/bin:/opt/cuda/bin:~/.cargo/bin:~/go/bin
# Add ruby gems to path
if which ruby >/dev/null && which gem >/dev/null; then
PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
export EDITOR=/usr/bin/vim
# Prevent mime associations by wine
export WINEPREFIX="$HOME/.wine"
export WINEDLLOVERRIDES="winemenubuilder.exe=d"
export CUDA_ROOT=/opt/cuda
# Android SDK setup
export ANDROID_HOME="/opt/android-sdk"
export PATH="$PATH:$ANDROID_HOME/tools/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"
# Configuration for virtualenv
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper_lazy.sh > /dev/null 2>&1
# disables prompt mangling in virtual_env/bin/activate
export VIRTUAL_ENV_DISABLE_PROMPT=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"
#run ssh-agent
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
ssh-agent > ~/.ssh-agent-thing
fi
if [[ "$SSH_AGENT_PID" == "" ]]; then
eval "$(<~/.ssh-agent-thing)"
fi
# Get rc dir path
RC_PATH=$(dirname "$(readlink -f ${(%):-%x})")
# Import utility functions
# Colors needed for the prompt definition
autoload -U colors
colors
. "$RC_PATH/functions"
. "$RC_PATH/aliases"
. "$RC_PATH/prompt"
# Check for rc updates in the background
(check_rc_update&) 2> /dev/null
# Check for system updates inthe background
(check_sys_update&) 2> /dev/null
# Configuration for kubectl & helm
#if [ $commands[kubectl] ]; then
source <(kubectl completion zsh)
#fi
export TILLER_NAMESPACE=gitlab-ci
#if [ $commands[helm] ]; then
source <(helm completion zsh)
#fi
### TODO WHERE ARE THE ALIASES
###########
# 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 -c route && echo && ip -c address'
alias ipr='ip -c address && echo && ip -c route'
alias which='which -a'
# Le fameux cd ...etc
alias -g ...='../..'
alias -g ....='../../..'
alias -g .....='../../../..'
alias -g ......='../../../../..'
alias -g .......='../../../../../..'
alias -g ........='../../../../../../..'
# Hackish tweaks
alias steam-wine="WINEDEBUG=-all wine $WINEPREFIX/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe -no-dwrite -no-cef-sandbox >/dev/null 2>&1 &"
alias pacaur='AURDEST=$HOME/aur pacaur'
alias redwm='cd ~/aur/dwm-git; updpkgsums; makepkg -fi --noconfirm; killall dwm'
alias minecraft='java -jar $HOME/.minecraft/launcher.jar'
alias shuffle='mpv --shuffle --volume=50 --no-audio-display'
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"
alias surftor='http_proxy=socks5://127.0.0.1:9050/ surf'
alias ytmp3='youtube-dl -x --audio-format mp3 --no-playlist -o "%(title)s.%(ext)s"'
# Fix pour archlinux
alias zbarcam='LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so zbarcam'
alias gitprunelocal="git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d"
alias gitprunelocalforce="git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -D"
alias cantine="curl -s https://timechef.elior.com/api/restaurant/22/menus | jq -r '.[0].famillePlats[0].plats[].libelle'"
# Term specific hacks
case $TERM in
*kitty)
preexec () {
print -n "\e]0;kitty - $1 - ${HOST} - ${PWD}\a"
}
alias ssh='ssh_kitty'
;;
xterm*)
preexec () {
print -n "\e]0;xterm - $1 - ${HOST} - ${PWD}\a"
}
;;
# Fix broken ssh with st
st*)
preexec () {
print -n "\e]0;st - $1 - ${HOST} - ${PWD}\a"
}
# alias ssh='TERM=xterm ssh -A'
alias ssh='TERM=xterm ssh'
;;
esac
# Prevent CTRL-S from locking the terminal
stty -ixon
###############
# ZSH options #
###############
unsetopt rm_star_silent # Demande confirmation pour 'rm *' -> ou 'rm path/*'
unsetopt promptsubst # ZLE is handling prompt recalculation
# (disabled) If there is an unambiguous prefix to insert on
# the command line, that is done without a completion list being displayed
#setopt list_ambiguous
# >| doit être utilisé pour pouvoir écraser un fichier déjà existant ;
# # le fichier ne sera pas écrasé avec '>'
#unsetopt clobber
setopt chase_links # Traite les liens symboliques comme il faut
setopt hist_verify # !! n\'est pas exécuté directement
setopt hist_ignore_all_dups # Only keep last version of duplicate command
setopt sharehistory # Import new cmds from hist file & append typed cmds
setopt hist_ignore_space # Ignore cmds with leading space
setopt autopushd # cd pushes old dir to dir stack
setopt pushdsilent # Silent pushd & popd
setopt pushdtohome # pushd = pushd $HOME
setopt pushdignoredups
setopt pushdminus # This reverts the +/- operators for pushd.
setopt nobeep # Beeps are a pain
EXPORTTIME=0 # (Disabled) Display command execution time
HISTSIZE=10000000
SAVEHIST=10000000
HISTFILE=~/.history
HISTTIMEFORMAT="%d/%m %H:%M:%S "
######################
# Load ZSH functions #
######################
zmodload zsh/complist
autoload -U compinit promptinit
compinit
colors
autoload -U zsh-mime-setup
######################
# Completion options #
######################
unsetopt glob_dots # (disabled) Do not require a leading '.' in a filename to be matched explicitly.
setopt auto_remove_slash # Auto remove slash at the end of autocomp when appropriate
setopt completeinword # If the cursor is inside a word, completion is done from both ends
setopt extendedglob # Treat '#', '~' and '^' chars as part of patterns for filenames, etc.
setopt globcomplete # When the current word has a glob pattern, do not insert all the words resulting from the expansion
setopt null_glob # Delete pattern when no match found, instead of erroring
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
zstyle ':completion:*' max-errors 3 numeric
zstyle ':completion:*' use-compctl false
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 "=(#b) #([0-9]#)*=36=31"
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
# Des couleurs pour la complétion cf kill -9 <tab><tab>
zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=36=31"
zstyle ':completion:*:processes' command 'ps -au$USER -o pid,time,cmd|grep -v "ps -au$USER -o pid,time,cmd"'
# Separate man page sections. Neat.
zstyle ':completion:*:manuals' separate-sections true
# 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<tab>
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zs
# Enable ssh completion for kitty ssh
compdef ssh_kitty=ssh
################
# Prompt setup #
################
autoload -Uz vcs_info
promptinit
# Set timeout to 0.1s for switching to normal mode (might interfere with other apps)
export KEYTIMEOUT=1
zle -N zle-line-init
zle -N zle-keymap-select
##################
# Keyboard setup #
##################
bindkey -v # Vim type keybinds for ZLE (line editing)
# 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
# Vim style incremental search
bindkey -M vicmd "/" history-incremental-search-backward
bindkey -M vicmd "?" history-incremental-search-forward
# Push the current command to the stack. ZLE will pop it on the next prompt
bindkey -M vicmd "q" push-line
# 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 "^[[H" 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
# ZSH syntax highlighting : /!\ keep at the bottom !
source "${RC_PATH}/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh"