# Copyright (c) 2016-2018 Ming Qin (覃明) # Open source under MIT LICENSE. ZSH_THEME="agnoster" plugins=(zsh-autosuggestions git pip django docker docker-compose) # ...... unsetopt AUTO_CD compdef gw=gradle # https://github.com/gradle/gradle-completion/issues/14#issuecomment-478816232 alias l='ls -alhtr' alias upthis='ss u' alias downthis='ss d' alias dcp='docker-compose' alias docker-clean='docker system prune --volumes -f' alias g='git' alias gs='git status' alias gl='git l' alias gd='git diff' alias gb='git branch' alias gck='git checkout' alias gp='git pull' # https://stackoverflow.com/questions/1904860/how-to-remove-unreferenced-blobs-from-my-git-repo alias git-clean='git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@"' unalias gbd || true gbd() { # Delete local branches that squash-merged to `master`. Forked from https://github.com/not-an-aardvark/git-delete-squashed git remote prune origin && git checkout -q master && git merge --ff-only origin/master && git for-each-ref refs/heads/ "--format=%(refname:short)" | while read branch; do mergeBase=$(git merge-base master $branch) && [[ $( git cherry master $( git commit-tree $( git rev-parse $branch^{tree} ) -p $mergeBase -m _ ) ) == "-"* ]] && git branch -D $branch; done; git prune } lazy_load() { # Act as a stub to another shell function/command. When first run, it will load the actual function/command then execute it. # E.g. This made my zsh load 0.8 seconds faster by loading `nvm` when "nvm", "npm" or "node" is used for the first time # $1: space separated list of alias to release after the first load # $2: file to source # $3: name of the command to run after it's loaded # $4+: argv to be passed to $3 echo "Lazy loading $1 ..." # $1.split(' ') using the s flag. In bash, this can be simply ($1) #http://unix.stackexchange.com/questions/28854/list-elements-with-spaces-in-zsh # Single line won't work: local names=("${(@s: :)${1}}"). Due to http://stackoverflow.com/questions/14917501/local-arrays-in-zsh (zsh 5.0.8 (x86_64-apple-darwin15.0)) local -a names if [[ -n "$ZSH_VERSION" ]]; then names=("${(@s: :)${1}}") else names=($1) fi unalias "${names[@]}" . $2 shift 2 $* } group_lazy_load() { local script script=$1 shift 1 for cmd in "$@"; do alias $cmd="lazy_load \"$*\" $script $cmd" done } export NVM_DIR=~/.nvm group_lazy_load $HOME/.nvm/nvm.sh nvm node npm truffle export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting group_lazy_load $HOME/.rvm/scripts/rvm rvm irb rake rails unset -f group_lazy_load alias ve="lazy_load 've' $HOME/git/simple-virtualenv-wrapper/ve.sh ve" # If using GnuPG to sign git commits, etc, need the following. export GPG_TTY=$(tty) # Other applications # eval $(thefuck --alias) # eval "$(pyenv init -)"