#!/bin/zsh ##################################################################### ### basic alias ##################################################### ##################################################################### alias pd='pushd' alias qd='popd' alias lsd='dirs' alias pdo='pwd | xclip' # [p]aste [d]irectory [o]n clipboard alias cdo='cd $(xclip -o)' # [c]hange to [d]irectory [o]n clipboard ##################################################################### ### default command override ######################################## ##################################################################### alias ls='ls --color=auto --group-directories-first' command -v bat >/dev/null 2>&1 \ && alias cat='bat --style="plain"' command -v startplasma-x11 >/dev/null 2>&1 \ && alias startk="startx '$DOTWRYN/config/xinitrc.kde'" command -v i3 >/dev/null 2>&1 \ && alias starti="startx '$DOTWRYN/config/xinitrc.i3'" ##################################################################### ### fancy alias (not technically an "alias" but makes sense here) ### ##################################################################### w() { # fancy(?) version of "alias w='watch -tcn1 '" local WATCH_ARGS=() WATCH_ARGS+=(--no-title) WATCH_ARGS+=(--color) WATCH_ARGS+=(--interval 1) # don't add delay if command is available to /bin/sh /bin/sh -c "command -v $1" >/dev/null 2>&1 && { watch ${WATCH_ARGS[@]} $@ return $? } # quickly reduce first-order aliases alias $1 >/dev/null 2>&1 && { watch ${WATCH_ARGS[@]} $(which $1 | sed 's/.*aliased to //') ${@:2} return $? } # import zshrc and inject current environment watch ${WATCH_ARGS[@]} "zsh -c 'source ~/.zshrc >/dev/null 2>&1; $(while read e; do printf 'export '; printf '%q ' "$e"; echo; done < <(env) | grep '='); echo \" $@\n---------------------------------------------------- \$(date +%H:%m:%S)\"; $@'" } erg() { # [e]dit files with [r]ip[g]rep matches $EDITOR $(rg --color=never --files-with-matches $@) } fix() { # [fix] merge conflicts local PREFIX="$(git rev-parse --show-toplevel)" [ $PREFIX ] || return 128 local FILE FILES=() for FILE in $(git diff --name-only 2>/dev/null | sort -u) do echo "diff detected in $(basename -- $(dirname -- "$FILE"))/$(basename -- "$FILE")" >&2 FILES+=("$PREFIX/$FILE") done [[ ${#FILES[@]} -eq 0 ]] && { echo "no merge conflicts detected" return 0 } $EDITOR ${FILES[@]} } restart() { # reload zshrc with some bonus options local _S EXECUTION_MODE=quiet while [[ $# -gt 0 ]] do _S=1 case $1 in ( -h | --help ) which restart; return 0 ;; ( -v | --verbose ) EXECUTION_MODE=verbose ;; ( -l | --login ) EXECUTION_MODE=login ;; esac shift $_S done case $EXECUTION_MODE in login ) echo "--- fresh start c: ---" >&2 zsh -l echo "--- fresh end :c ---" >&2 ;; verbose ) source "$HOME/.zshrc" ;; quiet ) clear source "$HOME/.zshrc" 2>/dev/null ;; esac } ##################################################################### return 0