servyass-dotfiles/.zshrc

137 lines
7.6 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ~/.zshrc : servyass (aussi utilisé par root : /root/.zshrc le charge, d'où les chemins absolus)
# Style du portfolio : fond noir, accent lime #d3fd50, encre #f5f5f0, gris #8a8a85, ambre #ffcf4a, rouge #ff5f5f.
# Ancienne config : ~/backups/zsh-20261008/
export PATH="$HOME/.local/bin:$PATH"
export EDITOR=${EDITOR:-nano}
export LANG=${LANG:-fr_FR.UTF-8}
# ── Historique ────────────────────────────────────────────────────────
HISTFILE=~/.zsh_history
HISTSIZE=20000
SAVEHIST=20000
setopt histignorealldups histignorespace sharehistory extendedhistory
setopt autocd interactivecomments nobeep
bindkey -e
# ── Complétion : menu navigable, couleurs du thème ────────────────────
autoload -Uz compinit && compinit -C
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' group-name ''
zstyle ':completion:*:descriptions' format $'%F{#d3fd50}── %d%f'
zstyle ':completion:*:warnings' format $'%F{#ff5f5f}── aucun résultat%f'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
# ── Couleurs de ls, man/less ──────────────────────────────────────────
# sg/su/ow/tw/st : sans fond coloré (beaucoup de fichiers de ~ sont setgid à cause de FileBrowser)
export LS_COLORS='su=38;2;255;95;95:sg=38;2;245;245;240:ow=1;38;2;211;253;80:tw=1;38;2;211;253;80:st=1;38;2;211;253;80:ca=0:di=1;38;2;211;253;80:ln=38;2;124;200;255:ex=38;2;255;207;74:or=38;2;255;95;95:mi=38;2;255;95;95:*.tar=38;2;190;120;255:*.gz=38;2;190;120;255:*.zip=38;2;190;120;255:*.md=38;2;245;245;240:*.yml=38;2;160;160;155:*.json=38;2;160;160;155'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
export LESS='-R'
export LESS_TERMCAP_md=$'\e[1;38;2;211;253;80m' LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_us=$'\e[4;38;2;245;245;240m' LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_so=$'\e[38;2;10;10;10;48;2;211;253;80m' LESS_TERMCAP_se=$'\e[0m'
export MANPAGER='less -R'
# ── Alias ─────────────────────────────────────────────────────────────
alias ls='ls --color=auto --group-directories-first'
alias ll='ls -lah --color=auto --group-directories-first'
alias grep='grep --color=auto'
alias ..='cd ..' ...='cd ../..'
alias ec="$EDITOR /home/yass/.zshrc" # éditer ce fichier (même pour root)
alias sc="source $HOME/.zshrc" # recharger
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias motd='servyass_banner' # réafficher l'accueil
# ── Prompt ────────────────────────────────────────────────────────────
# SERVYASS ~/chemin sur main● · 12s
# ❯ ✕ 1 14:02:05
autoload -Uz vcs_info add-zsh-hook
setopt promptsubst
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' unstagedstr '%F{#ffcf4a}●%f'
zstyle ':vcs_info:git:*' stagedstr '%F{#d3fd50}✚%f'
zstyle ':vcs_info:git:*' formats ' %F{#8a8a85}sur%f %F{#d3fd50}%b%f%u%c'
zstyle ':vcs_info:git:*' actionformats ' %F{#8a8a85}sur%f %F{#d3fd50}%b%f %F{#ff5f5f}(%a)%f%u%c'
typeset -g _yb_t0 _yb_took _yb_first=1
_yb_preexec() { _yb_t0=$EPOCHREALTIME; print -Pn "\e]0;servyass · %~ · ${1[1,40]}\a"; }
_yb_precmd() {
vcs_info
_yb_took=''
if [[ -n $_yb_t0 ]]; then
local s=$(( ${EPOCHREALTIME%.*} - ${_yb_t0%.*} ))
if (( s >= 60 )); then _yb_took=" %F{#8a8a85}·%f %F{#ffcf4a}$(( s / 60 )) min $(( s % 60 )) s%f"
elif (( s >= 3 )); then _yb_took=" %F{#8a8a85}·%f %F{#ffcf4a}${s} s%f"; fi
_yb_t0=''
fi
(( _yb_first )) && _yb_first=0 || print # une ligne d'air entre deux commandes
print -Pn "\e]0;servyass · %~\a"
}
zmodload zsh/datetime
add-zsh-hook preexec _yb_preexec
add-zsh-hook precmd _yb_precmd
# pastille d'hôte : lime pour yass, rouge en root
_yb_host='%(!.%K{#ff5f5f}%F{#0a0a0a}%B ROOT · SERVYASS %b%f%k.%K{#d3fd50}%F{#0a0a0a}%B SERVYASS %b%f%k)'
PROMPT='${_yb_host} %B%F{#f5f5f0}%(5~|…/%3~|%~)%f%b${vcs_info_msg_0_}${_yb_took}
%(?.%F{#d3fd50}.%F{#ff5f5f})❯%f '
RPROMPT='%(?..%F{#ff5f5f}✕ %?%f )%F{#5d5d58}%*%f'
PROMPT2='%F{#5d5d58}·%f '
# ── Plugins (paquets Debian + oh-my-zsh déjà présents) ─────────────────
_omz=/home/yass/.zplug/repos/ohmyzsh/ohmyzsh/plugins
[[ -r $_omz/sudo/sudo.plugin.zsh ]] && source $_omz/sudo/sudo.plugin.zsh # Échap Échap = ajoute sudo
[[ -r $_omz/git/git.plugin.zsh ]] && source $_omz/git/git.plugin.zsh # alias git (gst, gco, gp...)
unset _omz
if [[ -r /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#5d5d58'
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
fi
# fzf : Ctrl+R historique, Ctrl+T fichiers, Alt+C dossiers
[[ -r /usr/share/doc/fzf/examples/key-bindings.zsh ]] && source /usr/share/doc/fzf/examples/key-bindings.zsh
[[ -r /usr/share/doc/fzf/examples/completion.zsh ]] && source /usr/share/doc/fzf/examples/completion.zsh
export FZF_DEFAULT_OPTS="--height=45% --layout=reverse --border=rounded --prompt='❯ ' --pointer='▌' --marker='✓' \
--color=bg+:#141414,fg:#c8c8c0,fg+:#f5f5f0,hl:#d3fd50,hl+:#d3fd50,pointer:#d3fd50,prompt:#d3fd50,marker:#d3fd50,info:#5d5d58,border:#2a2a28,spinner:#d3fd50,header:#8a8a85"
# coloration syntaxique (toujours en dernier)
if [[ -r /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]]; then
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
typeset -A ZSH_HIGHLIGHT_STYLES
ZSH_HIGHLIGHT_STYLES[command]='fg=#d3fd50'
ZSH_HIGHLIGHT_STYLES[alias]='fg=#d3fd50'
ZSH_HIGHLIGHT_STYLES[builtin]='fg=#d3fd50'
ZSH_HIGHLIGHT_STYLES[function]='fg=#d3fd50'
ZSH_HIGHLIGHT_STYLES[precommand]='fg=#d3fd50,underline'
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#ff5f5f'
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#be78ff'
ZSH_HIGHLIGHT_STYLES[path]='fg=#f5f5f0,underline'
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#ffcf4a'
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#ffcf4a'
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#ffcf4a'
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=#8a8a85'
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=#8a8a85'
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#be78ff'
ZSH_HIGHLIGHT_STYLES[redirection]='fg=#be78ff'
ZSH_HIGHLIGHT_STYLES[comment]='fg=#5d5d58'
ZSH_HIGHLIGHT_STYLES[globbing]='fg=#7cc8ff'
fi
# historique filtré par ce qui est déjà tapé : flèches haut / bas
if [[ -r /home/yass/.zplug/repos/zsh-users/zsh-history-substring-search/zsh-history-substring-search.zsh ]]; then
source /home/yass/.zplug/repos/zsh-users/zsh-history-substring-search/zsh-history-substring-search.zsh
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='fg=#0a0a0a,bg=#d3fd50'
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='fg=#0a0a0a,bg=#ff5f5f'
bindkey '^[[A' history-substring-search-up; bindkey '^[OA' history-substring-search-up
bindkey '^[[B' history-substring-search-down; bindkey '^[OB' history-substring-search-down
fi
# ── Accueil : à l'ouverture d'une session (SSH ou premier shell), pas dans les sous-shells ──
source /home/yass/.config/servyass/banner.zsh
if [[ -o interactive && $SHLVL -le 1 && -z $VSCODE_INJECTION && -z $TMUX ]]; then
servyass_banner
fi