# Open in Emacs edit() { emacsclient --no-wait --alternate-editor="emacs" "$@" &> /dev/null & disown } # Create QR code from link qr() { qrencode "$1" -t ANSIUTF8 -o -; } # Open directory in projects prj() { local projdir projdir=$(ls $PROJ | fzf) if [[ -z $projdir ]] then return 1 else cd $projdir fi } # Activate pyenv virtualenv venv() { source ~/.pyenv/versions/$1/bin/activate } # Temporarily enter iPython interpreter with its Pyenv ipy() { STORED_VENV=$VIRTUAL_ENV source $WORKON_HOME/ipython/bin/activate && \ ipython && \ deactivate && \ if [ $STORED_VENV ]; then source $STORED_VENV/bin/activate fi } # Run pylint on all python files lint() { fd -IH -t f .py$ | xargs pylint } # Stolen from: https://github.com/davidpdrsn/dotfiles/blob/master/zsh/functions # Extract archives extract() { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar 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' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi } # fe [FUZZY PATTERN] - Open the selected file with the default editor # - Bypass fuzzy finder if there's only one match (--select-1) # - Exit if there's no match (--exit-0) fe() { local file file=$(fzf --query="$1" --select-1 --exit-0) [ -n "$file" ] && ${EDITOR:-vim} "$file" } # fd - cd to selected directory fcd() { local dir dir=$(find ${1:-*} -path '*/\.*' -prune \ -o -type d -print 2> /dev/null | fzf +m) && cd "$dir" } # dir - fd name of dir in this directory dir() { # fd ".*$1.*" -H -d 1 ls -lha | rg "$1" } # vers - switch to pyenv virtualenv with fuzzy menu vers() { local version version=$(pyenv versions --bare --skip-aliases | fzf) if [[ -z $version ]] then return 1 else source $WORKON_HOME/$version/bin/activate fi } # unsetaws - remove all AWS environment variables unsetaws() { unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY } copy() { cat $1 | pbcopy } cloud() { profile=${$1:-default} search=${2:-prod} num=${$3:-1} ips=$(drips --raw | grep $search) if [[ -z $ips ]] then echo "Failed to find instances." return 1 fi count=$(echo $ips | wc -l) echo "Found ${count##*( )} instances." ip=$(echo $ips | sed -n "$num"p | awk -F' - ' '{print $2}') if [[ -z $ip ]] then echo "Not an available selection." return 1 fi update-ssh-config --host $search --hostname $ip ssh $search } journal() { today=$(date -j +"%Y-%m-%d_%a") today_journal=$HOME/Documents/notes/journal/$today.md if [[ -f $today_journal ]] then echo "Already exists." else yesterday=$(date -jv "-1d" +"%Y-%m-%d_%a") tomorrow=$(date -jv "+1d" +"%Y-%m-%d_%a") printf "[[journal/$yesterday|Previous]] - [[calendar|Index]] - [[journal/$tomorrow|Next]]\n\n---\n\n# Tasks\n\n\n# Log\n\n\n# Communication\n\n---\n\n# Meetings\n\n" > $today_journal echo "New journal added." fi }