211 lines
8 KiB
Bash
211 lines
8 KiB
Bash
# **************************************************************************** #
|
|
# #
|
|
# ::: :::::::: #
|
|
# .zshrc :+: :+: :+: #
|
|
# +:+ +:+ +:+ #
|
|
# By: abosc <abosc@42lehavre.fr> +#+ +:+ +#+ #
|
|
# +#+#+#+#+#+ +#+ #
|
|
# Created: 2026/06/15 16:19:14 by abosc #+# #+# #
|
|
# Updated: 2026/06/15 16:19:14 by abosc ### ########.fr #
|
|
# #
|
|
# **************************************************************************** #
|
|
|
|
|
|
# ==============================================================================
|
|
# 1. CONFIGURATION D'OH-MY-ZSH
|
|
# ==============================================================================
|
|
export ZSH="$HOME/.oh-my-zsh"
|
|
|
|
ZSH_THEME="agnosterzak"
|
|
|
|
plugins=(
|
|
git
|
|
archlinux
|
|
zsh-autosuggestions
|
|
zsh-syntax-highlighting
|
|
sudo
|
|
copypath
|
|
)
|
|
|
|
source $ZSH/oh-my-zsh.sh
|
|
|
|
# ==============================================================================
|
|
# 2. OPTIONS DE CONFIGURATION DE BASE
|
|
# ==============================================================================
|
|
|
|
# --- Gestion de l'historique ---
|
|
HISTFILE=~/.zsh_history
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
|
|
setopt SHARE_HISTORY # Partage l'historique entre toutes les sessions ouvertes
|
|
setopt HIST_IGNORE_DUPS # Ne pas enregistrer une commande si c'est la même que la précédente
|
|
setopt HIST_IGNORE_ALL_DUPS # Supprime les lignes répétées de l'historique
|
|
setopt HIST_REDUCE_BLANKS # Retire les espaces inutiles des commandes avant de les stocker
|
|
setopt HIST_IGNORE_SPACE # Ne pas enregistrer les commandes commençant par un espace
|
|
|
|
# --- Complétion ---
|
|
zstyle ':completion:*' menu select # Améliore la complétion (plus visuelle)
|
|
|
|
# ==============================================================================
|
|
# 3. COMPOSANTS EXTERNES & UTILITAIRES (Fastfetch, FZF, Zoxide)
|
|
# ==============================================================================
|
|
|
|
# Affichage des infos système au démarrage
|
|
fastfetch --logo-type kitty --logo ~/.config/arch_logo.png --logo-width 30 --logo-height 14
|
|
|
|
# Raccourcis clavier FZF (CTRL+R pour l'historique flou)
|
|
source <(fzf --zsh)
|
|
|
|
# Navigation intelligente avec Zoxide
|
|
eval "$(zoxide init zsh)"
|
|
|
|
# ==============================================================================
|
|
# 4. ALIAS
|
|
# ==============================================================================
|
|
|
|
# Remplacement de 'cd' par 'z' (Zoxide)
|
|
alias cd='z'
|
|
|
|
# Navigation rapide
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
alias ....='cd ../../..'
|
|
alias pedago='cd /home/achille/Documents/work/dashboard_pedago'
|
|
alias dash="cd /home/achille/Documents/work/dashboard_pedago"
|
|
|
|
# Amélioration de 'ls' via lsd
|
|
alias ls='lsd --hyperlink=always'
|
|
alias l='ls -l'
|
|
alias la='ls -a'
|
|
alias lla='ls -la'
|
|
alias lt='ls --tree'
|
|
alias lr='ls -R'
|
|
|
|
# Sécurité (Confirmations avant actions sensibles)
|
|
alias rm='rm -i'
|
|
alias cp='cp -i'
|
|
alias mv='mv -i'
|
|
|
|
# Corrections de fautes de frappe courantes
|
|
alias celar=clear
|
|
alias cela=clear
|
|
alias exot=exit
|
|
alias clear='printf "\033c"'
|
|
|
|
# Raccourcis Système & Outils (Arch / Yay)
|
|
alias up='yay -Syu'
|
|
alias zrc='source ~/.zshrc'
|
|
alias vi=vim
|
|
alias kq="pkill quickshell"
|
|
alias yays='yay -Ss' # Chercher un paquet sur les dépôts + AUR
|
|
alias yayi='yay -S' # Installer un paquet
|
|
alias yayr='yay -Rns' # Désinstaller proprement (avec dépendances et configs)
|
|
alias yayc='yay -Yc' # Nettoyer les dépendances orphelines
|
|
|
|
# Python / Environnements virtuels
|
|
alias prc='source .venv/bin/activate'
|
|
alias p="prc && python3 src/main.py"
|
|
alias py="prc && python3"
|
|
alias convert="python3 /home/achille/Documents/work/utilities/svg_to_png.py"
|
|
|
|
# Projets spécifiques & Scripts
|
|
alias retry="ruby /home/achille/Documents/work/Initiation/quick-retry/main.rb"
|
|
|
|
# Connexions (VPN & VM 42)
|
|
alias vpn="sudo openvpn --config ~/Documents/VPN/nat-UDP4-1194-achille-config.ovpn"
|
|
alias 42vm="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@PointsForProjects.42lehavre.fr"
|
|
alias n8n="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@n8n.42lehavre.fr"
|
|
alias cluster="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@ansiblecluster.42lehavre.fr"
|
|
alias 42vmdb="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 -L 8000:localhost:8000 ansible@pointsforprojects.42lehavre.fr"
|
|
alias ldap="kitty +kitten ssh -i ~/Documents/important_key/ssh_key -p 4222 ansible@ldap.42lehavre.fr"
|
|
|
|
|
|
# ==============================================================================
|
|
# 5. FONCTIONS CUSTOM
|
|
# ==============================================================================
|
|
|
|
# Extraction automatique d'archives
|
|
extract() {
|
|
if [ -f $1 ] ; then
|
|
case $1 in
|
|
*.tar.bz2) tar xjf $1 ;;
|
|
*.tar.gz) tar xzf $1 ;;
|
|
*.bz2) bunzip2 $1 ;;
|
|
*.rar) unrar x $1 ;;
|
|
*.gz) gunzip $1 ;;
|
|
*.tar) tar xf $1 ;;
|
|
*.tbz2) tar xjf $1 ;;
|
|
*.tgz) tar xzf $1 ;;
|
|
*.zip) unzip $1 ;;
|
|
*.Z) uncompress $1 ;;
|
|
*.7z) 7z x $1 ;;
|
|
*) echo "'$1' ne peut pas être extrait via extract()" ;;
|
|
esac
|
|
else
|
|
echo "'$1' n'est pas un fichier valide"
|
|
fi
|
|
}
|
|
|
|
# Chercher un fichier et l'ouvrir directement dans Vim
|
|
fo() {
|
|
local file
|
|
file=$(fzf --preview 'bat --style=numbers --color=always --line-range :500 {}') && vi "$file"
|
|
}
|
|
|
|
# Créer et activer un venv Python instantanément
|
|
mkenv() {
|
|
python3 -m venv .venv && source .venv/bin/activate && pip install --upgrade pip
|
|
}
|
|
|
|
# Créer un dossier ET entrer dedans directement
|
|
# Plus besoin de faire 'mkdir super-projet' puis 'cd super-projet'
|
|
mkcd() {
|
|
mkdir -p "$1" && cd "$1"
|
|
}
|
|
|
|
# Connaître instantanément ton IP publique et locale
|
|
alias myip="echo 'Interne: ' && hostname -I | awk '{print $1}' && echo 'Publique: ' && curl -s ifconfig.me && echo ''"
|
|
|
|
# Générer un mot de passe aléatoire et sécurisé de 20 caractères (sans fioritures)
|
|
alias genpass="openssl rand -base64 15"
|
|
|
|
# Un 'grep' amélioré qui affiche les numéros de ligne et de la couleur par défaut
|
|
alias grep="grep --color=auto -n"
|
|
|
|
# Sauvegarde rapide : Ajoute tout, commit avec le message de ton choix, et push
|
|
# Utilisation : gsave "Correction bug typo"
|
|
gsave() {
|
|
git add -A && git commit -m "$1" && git push
|
|
}
|
|
|
|
# Revenir en arrière proprement (Annuler le dernier commit mais GARDER les modifications dans ton éditeur)
|
|
alias undo="git reset --soft HEAD~1"
|
|
|
|
# Nettoyer les branches locales qui ont été fusionnées et supprimées sur GitHub/GitLab
|
|
alias git-clean="git fetch -p && git branch -vv | awk '/: gone]/ {print \$1}' | xargs -r git branch -d"
|
|
|
|
# Voir la taille des dossiers du répertoire courant triés par taille (via lsd)
|
|
# Idéal pour voir ce qui prend de la place en un coup d'œil
|
|
alias du-folders="lsd -lh --total-size"
|
|
|
|
# Partager rapidement un fichier depuis ton terminal
|
|
# Ça génère un lien de téléchargement temporaire (valide 14 jours)
|
|
# Utilisation : share mon_rapport.pdf
|
|
share() {
|
|
curl --upload-file "$1" https://transfer.sh/$(basename "$1") && echo ""
|
|
}
|
|
|
|
# Redémarrer Kitty proprement sans fermer toutes tes fenêtres en cours (Reload config)
|
|
alias kitty-reload="kill -SIGUSR1 $(pgrep kitty)"
|
|
|
|
# ==============================================================================
|
|
# 6. OVERRIDES ET FORCE-PASS (Placé à la fin pour bloquer Oh My Zsh)
|
|
# ==============================================================================
|
|
|
|
# Horloge à droite du terminal (Heure:Minute:Seconde)
|
|
RPROMPT='%F{242}%*%f'
|
|
|
|
# Force Zsh à corriger automatiquement SANS demander la confirmation [nyae]
|
|
unsetopt correct
|
|
setopt correct_all
|