Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
zshrc 8.06 KiB
Newer Older
Freezed's avatar
Freezed committed
# ############################################# #
#                 ~/.zshrc                      #
#                                               #
#       This file is managed by Ansible         #
#       Manual edition will be overridden       #
#                                               #
#   https://lab.frogg.it/fcode/ansible/debian   #
#    from http://formation-debian.via.ecp.fr    #
#                                               #
# ############################################# #


# ############ #
# 1. Les alias #
# ############ #

# Gestion du 'ls' couleur
alias ls='ls --color'
alias ll='ls -hal'

# Demande confirmation avant d'écraser un fichier
alias cp='cp --interactive'
alias mv='mv --interactive'
alias rm='rm --interactive'

# Quelques alias pratiques
alias c='clear'
alias less='less --quiet'
alias df='df --human-readable'
alias du='du --human-readable'
alias md='mkdir --parent'

# Mes alias
function gh() { grep --color "$1" ~/.history }
alias ada='sudo apt update && sudo apt list --upgradable && sudo apt clean'
alias agr='sudo apt upgrade && sudo apt autoclean && sudo apt autoremove'
alias apti='sudo apt install'
alias p1='ping -c 1 '
fred's avatar
fred committed
alias gps='for proj in $(find ~/git -mindepth 1 -maxdepth 1 -type d -printf "%p\n");do RES=$(git -C ${proj} status -s) && [[ -n ${RES} ]] && echo "\n# ${proj#${HOME}/git/}:\n${RES}";done'
alias gpu='for proj in $(find ~/git -mindepth 1 -maxdepth 1 -type d -printf "%p\n");do git -C ${proj} fetch --prune --quiet || echo "ERROR fetching git repo: ${proj#${HOME}/git/}";done'
Freezed's avatar
Freezed committed
alias p1='ping -c 1 '
alias sudo='sudo '
alias ttoday='cat ~/.timed|grep "$(date +%d) Oct 2021" | timed parse'
alias vact='source ~/.venvs/$(pwd | cut -d"/" -f5)/bin/activate'
alias vc10='~/pylocal/bin/python3.10 -m venv --clear --copies ~/.venvs/$(pwd | cut -d "/" -f5)'
alias vc='python3 -m venv --clear --copies ~/.venvs/$(pwd | cut -d "/" -f5)'
alias vdestroy='VENV_PATH="${HOME}/.venvs/$(pwd | cut -d"/" -f5)/" && echo ${VENV_PATH} && rm -rfI ${VENV_PATH}'
Freezed's avatar
Freezed committed

# Timed
alias tart='timed start _job_;vi ~/.timed +'
alias tsto='timed stop;ttod'
alias ttod='cat ~/.timed | grep "$(date +%d) Jan 2022" | timed parse'


# ######################### #
# 2. Définition des touches #
# ######################### #

# Correspondance touches-fonction
#bindkey ''    delete-char
#bindkey '[3~' delete-char
#bindkey '[2~' overwrite-mode

# Beginning/end of line
bindkey ""      beginning-of-line
bindkey "\e[1~"   beginning-of-line
bindkey "\e[H"    beginning-of-line
bindkey ""      end-of-line
bindkey "\e[4~"   end-of-line
bindkey "\e[F"  end-of-line

# History search
bindkey '^R'      history-incremental-search-backward
bindkey '^F'      history-incremental-search-forward

# ctrl+<- | ctrl+->
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word


# Prompt couleur (la couleur n'est pas la même pour le root et
# pour les simples utilisateurs)
if [ "`id -u`" -eq 0 ]; then
  export PS1="%{%}%T %{%}%n%{%}@%{%}%m %{%}%~ %{%}%#%{%} "
else
  export PS1="%{%}%T %{%}%n%{%}@%{%}%m %{%}%~ %{%}%#%{%} "
fi

# Prise en charge des touches [début], [fin] et autres
typeset -A key

key[Home]=${terminfo[khome]}
key[End]=${terminfo[kend]}
key[Insert]=${terminfo[kich1]}
key[Delete]=${terminfo[kdch1]}
key[Up]=${terminfo[kcuu1]}
key[Down]=${terminfo[kcud1]}
key[Left]=${terminfo[kcub1]}
key[Right]=${terminfo[kcuf1]}
key[PageUp]=${terminfo[kpp]}
key[PageDown]=${terminfo[knp]}

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


# Titre de la fenêtre d'un xterm
case $TERM in
   xterm*)
       precmd () {print -Pn "\e]0;%n@%m: %~\a"}
       ;;
esac

# Gestion de la couleur pour 'ls' (exportation de LS_COLORS)
if [ -x /usr/bin/dircolors ]
then
  if [ -r ~/.dir_colors ]
  then
    eval "`dircolors ~/.dir_colors`"
  elif [ -r /etc/dir_colors ]
  then
    eval "`dircolors /etc/dir_colors`"
  else
    eval "`dircolors`"
  fi
fi


# ####################################### #
# 3. Options de zsh (cf 'man zshoptions') #
# ####################################### #

# Je ne veux JAMAIS de beeps
unsetopt beep
unsetopt hist_beep
unsetopt list_beep
# >| doit être utilisés pour pouvoir écraser un fichier déjà existant ;
# le fichier ne sera pas écrasé avec '>'
#~ unsetopt clobber
# Ctrl+D est équivalent à 'logout'
unsetopt ignore_eof
# Affiche le code de sortie si différent de '0'
setopt print_exit_value
# Demande confirmation pour 'rm *'
unsetopt rm_star_silent
# Correction orthographique des commandes
# Désactivé car, contrairement à ce que dit le "man", il essaye de
# corriger les commandes avant de les hasher
#setopt correct
# Si on utilise des jokers dans une liste d'arguments, retire les jokers
# qui ne correspondent à rien au lieu de donner une erreur
setopt nullglob

# Options de complétion
# Quand le dernier caractère d'une complétion est '/' et que l'on
# tape 'espace' après, le '/' est effacé
setopt auto_remove_slash
# Ne fait pas de complétion sur les fichiers et répertoires cachés
unsetopt glob_dots

# Traite les liens symboliques comme il faut
setopt chase_links

# Quand l'utilisateur commence sa commande par '!' pour faire de la
# complétion historique, il n'exécute pas la commande immédiatement
# mais il écrit la commande dans le prompt
setopt hist_verify
# Si la commande est invalide mais correspond au nom d'un sous-répertoire
# exécuter 'cd sous-répertoire'
setopt auto_cd
# L'exécution de "cd" met le répertoire d'où l'on vient sur la pile
setopt auto_pushd
# Ignore les doublons dans la pile
setopt pushd_ignore_dups
# N'affiche pas la pile après un "pushd" ou "popd"
setopt pushd_silent
# "pushd" sans argument = "pushd $HOME"
setopt pushd_to_home

# Les jobs qui tournent en tâche de fond sont nicé à '0'
unsetopt bg_nice
# N'envoie pas de "HUP" aux jobs qui tourent quand le shell se ferme
unsetopt hup


# ########################################### #
# 4. Paramètres de l'historique des commandes #
# ########################################### #

setopt EXTENDED_HISTORY
export HISTTIMEFORMAT="[%F %T] "

# Nombre d'entrées dans l'historique
export HISTORY=50000
export SAVEHIST=50000

# Fichier où est stocké l'historique
export HISTFILE=$HOME/.history

# Ajoute l'historique à la fin de l'ancien fichier
setopt APPEND_HISTORY

# Chaque ligne est ajoutée dans l'historique à mesure qu'elle est tapée
setopt INC_APPEND_HISTORY

# Ne stocke pas  une ligne dans l'historique si elle  est identique à la
# précédente
setopt HIST_IGNORE_DUPS

# Supprime les  répétitions dans le fichier  d'historique, ne conservant
# que la dernière occurrence ajoutée
setopt HIST_IGNORE_ALL_DUPS

# Supprime les  répétitions dans l'historique lorsqu'il  est plein, mais
# pas avant
#setopt hist_expire_dups_first

# N'enregistre  pas plus d'une fois  une même ligne, quelles  que soient
# les options fixées pour la session courante
#setopt hist_save_no_dups

# La recherche dans  l'historique avec l'éditeur de commandes  de zsh ne
# montre  pas  une même  ligne  plus  d'une fois,  même  si  elle a  été
# enregistrée
setopt HIST_FIND_NO_DUPS


# ####################################### #
# 5. Complétion des options des commandes #
# ####################################### #

zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
zstyle ':completion:*' max-errors 3 numeric
zstyle ':completion:*' use-compctl false

autoload -U compinit
compinit

[[ -e ~/opt/zsh-autosuggestions/zsh-autosuggestions.zsh ]] && source ~/opt/zsh-autosuggestions/zsh-autosuggestions.zsh

# ###################### #
# 6. Local configuration #
# ###################### #
[[ -e ~/.zshlocal ]] && source ~/.zshlocal