ENH move a bunch of the zsh config to /etc
This commit is contained in:
parent
bb4d796ebe
commit
7591e2cf77
|
@ -1,52 +1,14 @@
|
||||||
autoload -Uz promptinit
|
## User-specific Zsh config (on top of what is in /etc/zsh/zshrc)
|
||||||
setopt appendhistory
|
|
||||||
setopt extendedglob
|
|
||||||
setopt correctall
|
|
||||||
bindkey -v
|
|
||||||
bindkey -v '^?' backward-delete-char
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
## --------------------------------------------------
|
||||||
# autocompletion
|
# autocompletion
|
||||||
## --------------------------------------------------
|
## --------------------------------------------------
|
||||||
# Highlight the current autocomplete option
|
|
||||||
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
|
||||||
|
|
||||||
# ignore full hostnames in ssh config file
|
# ignore full hostnames in ssh config file
|
||||||
# the default ssh function does not seem to differentiate b/t
|
# the default ssh function does not seem to differentiate b/t
|
||||||
# HOST and HOSTNAME directives
|
# HOST and HOSTNAME directives
|
||||||
zstyle ':completion:*:(ssh|scp|rsync|sshfs):*:hosts' ignored-patterns '*.yavin4.ch'
|
zstyle ':completion:*:(ssh|scp|rsync|sshfs):*:hosts' ignored-patterns '*.yavin4.ch'
|
||||||
|
|
||||||
autoload -Uz compinit && compinit -i
|
|
||||||
autoload -Uz bashcompinit && bashcompinit
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
|
||||||
# syntax highlighting a la fish
|
|
||||||
## --------------------------------------------------
|
|
||||||
for hlpath in zsh/plugins/zsh-syntax-highlighting zsh-syntax-highlighting; do
|
|
||||||
if [[ -e "/usr/share/$hlpath/zsh-syntax-highlighting.zsh" ]]; then
|
|
||||||
. "/usr/share/$hlpath/zsh-syntax-highlighting.zsh"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
|
||||||
# history
|
|
||||||
## --------------------------------------------------
|
|
||||||
|
|
||||||
setopt hist_expire_dups_first
|
|
||||||
setopt hist_ignore_dups
|
|
||||||
setopt hist_reduce_blanks
|
|
||||||
setopt inc_append_history
|
|
||||||
setopt share_history
|
|
||||||
|
|
||||||
autoload -Uz up-line-or-beginning-search
|
|
||||||
autoload -Uz down-line-or-beginning-search
|
|
||||||
zle -N up-line-or-beginning-search
|
|
||||||
zle -N down-line-or-beginning-search
|
|
||||||
bindkey '\eOA' up-line-or-beginning-search
|
|
||||||
bindkey '\e[A' up-line-or-beginning-search
|
|
||||||
bindkey '\eOB' down-line-or-beginning-search
|
|
||||||
bindkey '\e[B' down-line-or-beginning-search
|
|
||||||
{{- if eq .chezmoi.hostname "petrucci4prez" }}
|
{{- if eq .chezmoi.hostname "petrucci4prez" }}
|
||||||
|
|
||||||
## --------------------------------------------------
|
## --------------------------------------------------
|
||||||
|
@ -87,224 +49,6 @@ local paste_widgets=(
|
||||||
)
|
)
|
||||||
x11-clip-wrap-widgets copy $copy_widgets
|
x11-clip-wrap-widgets copy $copy_widgets
|
||||||
x11-clip-wrap-widgets paste $paste_widgets
|
x11-clip-wrap-widgets paste $paste_widgets
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
|
||||||
## PROMPT
|
|
||||||
## --------------------------------------------------
|
|
||||||
|
|
||||||
setopt prompt_subst
|
|
||||||
|
|
||||||
if [[ ${EUID} -eq 0 ]]; then
|
|
||||||
user_color="%F{red}"
|
|
||||||
else
|
|
||||||
user_color="%F{cyan}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
HOSTNAME=""
|
|
||||||
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
|
|
||||||
HOSTNAME="@%M"
|
|
||||||
fi
|
|
||||||
|
|
||||||
PROMPT=""
|
|
||||||
RPROMPT=""
|
|
||||||
|
|
||||||
git_info() {
|
|
||||||
# Exit if not inside a Git repository
|
|
||||||
! git rev-parse --is-inside-work-tree > /dev/null 2>&1 && return
|
|
||||||
|
|
||||||
# Git branch/tag, or name-rev if on detached head
|
|
||||||
local GIT_LOCATION=$(git symbolic-ref -q HEAD || \
|
|
||||||
git name-rev --name-only \
|
|
||||||
--no-undefined --always HEAD)
|
|
||||||
GIT_LOCATION=${GIT_LOCATION#(refs/heads/|tags/)}
|
|
||||||
|
|
||||||
local AHEAD="%F{red}⇡NUM%f"
|
|
||||||
local BEHIND="%F{cyan}⇣NUM%f"
|
|
||||||
local MERGING="%F{magenta⚡︎%f"
|
|
||||||
local UNTRACKED="%F{red}●%f"
|
|
||||||
local MODIFIED="%F{yellow}●%f"
|
|
||||||
local STAGED="%F{green}●%f"
|
|
||||||
|
|
||||||
local -a DIVERGENCES
|
|
||||||
local -a FLAGS
|
|
||||||
|
|
||||||
local NUM_AHEAD="$(git log --oneline @{u}.. 2> /dev/null | wc -l | tr -d ' ')"
|
|
||||||
if [ "$NUM_AHEAD" -gt 0 ]; then
|
|
||||||
DIVERGENCES+=( "${AHEAD//NUM/$NUM_AHEAD}" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
local NUM_BEHIND="$(git log --oneline ..@{u} 2> /dev/null | wc -l | tr -d ' ')"
|
|
||||||
if [ "$NUM_BEHIND" -gt 0 ]; then
|
|
||||||
DIVERGENCES+=( "${BEHIND//NUM/$NUM_BEHIND}" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
local GIT_DIR="$(git rev-parse --git-dir 2> /dev/null)"
|
|
||||||
if [ -n $GIT_DIR ] && test -r $GIT_DIR/MERGE_HEAD; then
|
|
||||||
FLAGS+=( "$MERGING" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
|
|
||||||
FLAGS+=( "$UNTRACKED" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git diff --quiet 2> /dev/null; then
|
|
||||||
FLAGS+=( "$MODIFIED" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! git diff --cached --quiet 2> /dev/null; then
|
|
||||||
FLAGS+=( "$STAGED" )
|
|
||||||
fi
|
|
||||||
|
|
||||||
local -a GIT_INFO
|
|
||||||
[[ ${#DIVERGENCES[@]} -ne 0 ]] && GIT_INFO+=( "${(j::)DIVERGENCES}" )
|
|
||||||
[[ ${#FLAGS[@]} -ne 0 ]] && GIT_INFO+=( "${(j::)FLAGS}" )
|
|
||||||
GIT_INFO+=( "%F{green}$GIT_LOCATION%f" )
|
|
||||||
echo "─(%B${(j: :)GIT_INFO}%b)"
|
|
||||||
}
|
|
||||||
|
|
||||||
function zle-line-init zle-keymap-select {
|
|
||||||
GIT=$(git_info)
|
|
||||||
NORMAL="%F{yellow}N%f"
|
|
||||||
INSERT="%F{cyan}I%f"
|
|
||||||
VIMODE="─%B(${${KEYMAP/vicmd/$NORMAL}/(main|viins)/$INSERT})%b"
|
|
||||||
USER="$user_color%n$HOSTNAME%f"
|
|
||||||
TIME="%F{green}%*%f"
|
|
||||||
WD="%F{green}%1~%f"
|
|
||||||
PROMPT=$'\n%B┌($USER)─($TIME)$VIMODE$GIT\n└─($WD)─>%b '
|
|
||||||
zle reset-prompt
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle-line-init
|
|
||||||
zle -N zle-keymap-select
|
|
||||||
|
|
||||||
export KEYTIMEOUT=1
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
|
||||||
## Title
|
|
||||||
## --------------------------------------------------
|
|
||||||
|
|
||||||
precmd () { echo -ne "\033]0;urxvt: ${PWD}\007" }
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
|
||||||
## Aliases
|
|
||||||
## --------------------------------------------------
|
|
||||||
|
|
||||||
alias als='alias | grep'
|
|
||||||
alias hs='history 1 | grep'
|
|
||||||
|
|
||||||
alias grep='grep --color=auto'
|
|
||||||
alias sudo='sudo '
|
|
||||||
|
|
||||||
if [ -e /bin/colordiff ]; then
|
|
||||||
alias diff=colordiff
|
|
||||||
else
|
|
||||||
alias diff='diff --color'
|
|
||||||
fi
|
|
||||||
|
|
||||||
alias ls='ls --color'
|
|
||||||
|
|
||||||
if [ -e /bin/exa ]; then
|
|
||||||
alias ll='exa -alhg --group-directories-first'
|
|
||||||
alias llt='exa -T'
|
|
||||||
alias llg='ll --git'
|
|
||||||
else
|
|
||||||
alias ll='ls -alh'
|
|
||||||
[ -e /bin/tree ] && alias llt='tree'
|
|
||||||
fi
|
|
||||||
|
|
||||||
setopt autopushd
|
|
||||||
|
|
||||||
alias d='dirs -v | head -10'
|
|
||||||
alias d1='cd -'
|
|
||||||
alias d2='cd -2'
|
|
||||||
alias d3='cd -3'
|
|
||||||
alias d4='cd -4'
|
|
||||||
alias d5='cd -5'
|
|
||||||
alias d6='cd -6'
|
|
||||||
alias d7='cd -7'
|
|
||||||
alias d8='cd -8'
|
|
||||||
alias d9='cd -9'
|
|
||||||
|
|
||||||
alias u='cd ..'
|
|
||||||
alias uu='cd ../..'
|
|
||||||
alias uuu='cd ../../..'
|
|
||||||
alias uuuu='cd ../../../..'
|
|
||||||
alias uuuuu='cd ../../../../..'
|
|
||||||
|
|
||||||
alias reboot='sudo /sbin/reboot'
|
|
||||||
alias poweroff='sudo /sbin/poweroff'
|
|
||||||
alias halt='sudo /sbin/halt'
|
|
||||||
alias shutdown='sudo /sbin/shutdown'
|
|
||||||
|
|
||||||
alias sc="sudo systemctl"
|
|
||||||
alias sce="sudo systemctl enable"
|
|
||||||
alias scd="sudo systemctl disable"
|
|
||||||
alias scs="sudo systemctl start"
|
|
||||||
alias sct="sudo systemctl stop"
|
|
||||||
alias scr="sudo systemctl restart"
|
|
||||||
alias sca="systemctl status"
|
|
||||||
|
|
||||||
alias scu="systemctl --user"
|
|
||||||
alias scue="systemctl --user enable"
|
|
||||||
alias scud="systemctl --user disable"
|
|
||||||
alias scus="systemctl --user start"
|
|
||||||
alias scut="systemctl --user stop"
|
|
||||||
alias scur="systemctl --user restart"
|
|
||||||
|
|
||||||
if [ -e /bin/git ]; then
|
|
||||||
alias g='git'
|
|
||||||
alias gcl='git clone'
|
|
||||||
alias ga='git add'
|
|
||||||
alias grm='git rm'
|
|
||||||
alias ga='git add'
|
|
||||||
alias gus='git reset HEAD'
|
|
||||||
alias gm="git merge"
|
|
||||||
alias gmv='git mv'
|
|
||||||
alias gs='git status -s -b'
|
|
||||||
alias gp='git push'
|
|
||||||
alias gpo='git push origin'
|
|
||||||
alias gpom='git push origin master'
|
|
||||||
alias gr='git remote'
|
|
||||||
alias gd='git diff'
|
|
||||||
alias gc='git commit -v'
|
|
||||||
alias gca='git commit -v -a'
|
|
||||||
alias gcm='git commit -v -m'
|
|
||||||
alias gcam="git commit -v -am"
|
|
||||||
alias gci='git commit --interactive'
|
|
||||||
alias gb='git branch'
|
|
||||||
alias gco='git checkout'
|
|
||||||
alias gg="git log --graph --pretty=format:'%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%C(cyan)\\ [%cn]' --abbrev-commit --date=relative"
|
|
||||||
alias ggs="gg --stat"
|
|
||||||
alias gw="git whatchanged"
|
|
||||||
alias gt="git tag"
|
|
||||||
alias gnew="git log HEAD@{1}..HEAD@{0}"
|
|
||||||
alias ggui="git gui"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -e /bin/chezmoi ]; then
|
|
||||||
alias cze="chezmoi edit"
|
|
||||||
alias czea="chezmoi edit --apply"
|
|
||||||
alias czd="chezmoi diff"
|
|
||||||
alias cza="chezmoi add"
|
|
||||||
alias czc="chezmoi cd"
|
|
||||||
fi
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
|
||||||
## Manly Colors
|
|
||||||
## --------------------------------------------------
|
|
||||||
|
|
||||||
man() {
|
|
||||||
env LESS_TERMCAP_mb=$'\E[01;31m' \
|
|
||||||
LESS_TERMCAP_md=$'\E[01;38;5;13m' \
|
|
||||||
LESS_TERMCAP_me=$'\E[0m' \
|
|
||||||
LESS_TERMCAP_se=$'\E[0m' \
|
|
||||||
LESS_TERMCAP_so=$'\E[38;5;3m' \
|
|
||||||
LESS_TERMCAP_ue=$'\E[0m' \
|
|
||||||
LESS_TERMCAP_us=$'\E[04;38;5;10m' \
|
|
||||||
man "$@"
|
|
||||||
}
|
|
||||||
{{- if eq .chezmoi.hostname "petrucci4prez" }}
|
|
||||||
|
|
||||||
## --------------------------------------------------
|
## --------------------------------------------------
|
||||||
## Python/Ruby Virtual Environments
|
## Python/Ruby Virtual Environments
|
||||||
|
|
Loading…
Reference in New Issue