# ############################################# # # ~/.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 ' alias gpu='for proj in $(find ~/git -mindepth 1 -maxdepth 1 -type d -printf "%p\n");do echo "## ${proj}";cd ${proj};git fetch --prune;done;cd ~' 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 vc7='~/pylocal/bin/python3.7 -m venv --clear --copies ~/.venvs/$(pwd | cut -d "/" -f5)' alias vc8='~/pylocal/bin/python3.8 -m venv --clear --copies ~/.venvs/$(pwd | cut -d "/" -f5)' alias vc9='~/pylocal/bin/python3.9 -m venv --clear --copies ~/.venvs/$(pwd | cut -d "/" -f5)' alias vc='python3 -m venv --clear --copies ~/.venvs/$(pwd | cut -d "/" -f5)' # 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="%{[36;1m%}%T %{[34m%}%n%{[33m%}@%{[37m%}%m %{[32m%}%~ %{[33m%}%#%{[0m%} " else export PS1="%{[36;1m%}%T %{[31m%}%n%{[33m%}@%{[37m%}%m %{[32m%}%~ %{[33m%}%#%{[0m%} " 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