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
  • Learn to ignore specific revisions
  • Freezed's avatar
    Freezed committed
    # ############################################# #
    #                 ~/.zshrc                      #
    #                                               #
    #       This file is managed by Ansible         #
    #       Manual edition will be overridden       #
    #                                               #
    
    freezed's avatar
    freezed committed
    #  https://lab.frogg.it/freezed/ansible-debian  #
    
    Freezed's avatar
    Freezed committed
    #    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