-
Notifications
You must be signed in to change notification settings - Fork 0
/
zshrc
269 lines (234 loc) · 6.77 KB
/
zshrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# GENERAL
# -----------------------------------------------------------------------
DOTFILES_DIR=$HOME/.dotfiles
# load prezto
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi
plugins=(git)
bindkey -v
bindkey '^R' history-incremental-search-backward
# .localrc for secrets
if [[ -a ~/.localrc ]]
then
source ~/.localrc
fi
# load control sequence variables
source $DOTFILES_DIR/env_scripts/colors.sh
# load work folder locations
source $DOTFILES_DIR/env_scripts/folders.sh
# initialize autocomplete here, otherwise functions won't be loaded
autoload -U compinit
compinit
# don't save lines beginning in spaces in history
setopt histignorespace
# PATH SETUP
# -----------------------------------------------------------------------
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/.fastlane/bin:$PATH"
export PATH="$HOME/Library/Python/3.8/bin:$PATH"
export PATH="/usr/local/opt/curl/bin:$PATH"
export PATH="/usr/local/Cellar/mtr/0.93_1/sbin:$PATH"
eval "$(pyenv init -)"
# export PATH=~/_/scratch/fuchsia/.jiri_root/bin:$PATH
# source ~/_/scratch/fuchsia/scripts/fx-env.sh
#
# export LIBGS="$(brew --prefix ghostscript)/lib/libgs.9.dylib"
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
# use gpg-agent for SSH
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpg-connect-agent updatestartuptty /bye > /dev/null
gpgconf --launch gpg-agent
# fix Python libc issue
export DYLD_LIBRARY_PATH=/usr/lib:$DYLD_LIBRARY_PATH
# fix Python OpenSSL on Catalina
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_FALLBACK_LIBRARY_PATH
# make homebrew more secure
export HOMEBREW_NO_ANALYTICS=1
export HOMEBREW_NO_INSECURE_REDIRECT=1
export HOMEBREW_CASK_OPTS=--require-sha
# ENV CONFIG
# -----------------------------------------------------------------------
export ANSIBLE_NOCOWS=1
# ALIASES
# -----------------------------------------------------------------------
# Reminder me what aliases do so I don't forget
_print_alias() {
alias_name=$2
highlight_color=$1
i=0
while read -r line; do
if [ "$i" -eq 0 ]; then
printf "$alias_name is an alias for: "
else
echo "$(color $highlight_color "$line")"
fi
i=$((i+1))
done < <(echo $(type $alias_name))
}
remind_alias() {
_print_alias cyan $1
}
alias ra=remind_alias
warn_alias() {
_print_alias yellow $1
}
cheat() {
curl "cheat.sh/$1?style=bw"
}
# commands
alias c='clear'
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
alias dc='cd'
alias h='history | rg'
alias q='exit'
alias v='vim'
alias vi='vim'
alias vv='vim ~/.dotfiles/init.vim'
alias zv='vim ~/.zshrc'
alias t='tmux'
alias ta='tmux attach'
alias x='xargs' # clobber xquartz
alias zh='less ~/.zhistory'
alias zrg='rg < ~/.zshrc'
alias zr!='. ~/.zshrc'
alias tika="java -jar ~/Downloads/tika-app-1.24.1.jar"
# clobber utilities with preferred options
alias python='python3'
alias pip='pip3'
if $(nvim -v &>/dev/null); then
alias vim='nvim'
fi
if $(rg &>/dev/null); then
alias grep='rg'
fi
if $(exa &>/dev/null); then
alias ls='exa'
alias l='exa'
alias ll='exa -l'
alias lll='exa -la'
fi
# helpful tools
alias pubkey="more ~/.ssh/id_rsa.pub | pbcopy | echo '=> Public key copied to pasteboard.'"
alias speedtest='wget -O /dev/null http://speedtest.wdc01.softlayer.com/downloads/test100.zip'
alias combinepdf='(remind_alias combinepdf)
/usr/local/bin/gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf'
alias dnsflush='dscacheutil -flushcache'
alias dockspace="defaults write com.apple.dock persistent-apps -array-add '{\"tile-type\"=\"spacer-tile\";}'; killall Dock"
alias spellcheck='aspell --dont-backup check'
alias chromescrot='chrome --headless --disable-gpu --screenshot'
writecheck() {
file_to_check="$1"
echo "$(color cyan 'spellcheck')"
spellcheck $file_to_check
echo "$(color cyan 'alex')"
alex $file_to_check
echo "$(color cyan 'diction')"
diction $file_to_check
echo "$(color cyan 'style')"
style $file_to_check
}
randp() {
gpg --gen-random --armor 0 36
}
pdf2svg() {
pdf_name=$1
# Inkscape needs absolute paths.
pdf_name=$(realpath "$pdf_name")
cmd="inkscape --export-plain-svg=\"$pdf_name.svg\" \"$pdf_name\""
echo "$(color cyan $cmd)"
eval $cmd
}
# folder jumping
alias n="cd $NOTES_FOLDER"
alias p="cd $SRC_FOLDER"
alias s="cd $SCRATCH_FOLDER"
tmp() {
cd $(mktemp -d /tmp/$1.XXXX)
}
# fancy man page
function xman() {
for i in "$@"; do
if [ $(command -v $i) ]; then
open x-man-page://$i
elif; then
printf "Can't find command: %s\n" "$i" >&2
fi
done
}
# git
alias gu!='(warn_alias gu!)
git commit --all --amend --no-edit'
alias gp='git push origin HEAD'
alias gp!='(warn_alias gp!)
git push -f origin HEAD'
alias gll="git log --graph --pretty=format:'%Cred%h%Creset %an: %s - %Creset\
%C(yellow)%d%Creset %Cgreen(%cr)%Creset' \
--abbrev-commit --date=relative"
alias gl='gll --color=always | head' # globber coreutils ls
alias glb='git lb'
alias gd='git diff'
alias gds='git diff --staged'
alias gs='git status' # clobber ghostscript
alias gc='git commit'
alias gaa='git add --all'
alias gco='git checkout'
alias gcom='git checkout master'
alias gb='git -P branch'
alias gms='git merge --squash'
alias grb='git rebase'
alias grbc='gre --continue'
alias grba='gre --abort'
alias gppru='git pull --prune'
alias grm="(warn_alias grm)
git status | grep deleted | awk '{\$1=\$2=\"\"; print \$0}' | \
perl -pe 's/^[ \t]*//' | sed 's/ /\\\\ /g' | xargs git rm"
rmbranch() {
branch_name=$1
printf "$(color red "deleting branch locally and on remote: $(bold red $branch_name)") "
printf "$(dim red "(ctrl-c to abort)")\n"
sleep 2
git push --delete origin $branch_name && git branch -d $branch_name
}
rgit() {
for dir in `ls "$SRC_FOLDER"`; do
echo ""
echo "running in $dir:"
cd "$dir"
git "$@"
cd -
done
}
pr_init() {
pr_title=$1
branch=$2
base_branch=${3:-master}
printf "$(color blue "creating new branch")\n"
git checkout -b "$branch"
printf "$(color blue "committing")\n"
git commit --all --allow-empty -m "$pr_title"
printf "$(color blue "creating PR")\n"
gh pr create --base "$base_branch" --draft --title "$pr_title" --body "[TODO]"
}
# cargo
alias cc='cargo check' # clobber llvm
alias cbr='cargo build --release'
alias crr='cargo run --release'
alias cb='cargo build'
alias ct='cargo test'
alias cf='cargo fmt'
alias cpr='(remind_alias cpr)
cargo test && cargo clippy --all && cargo fmt'
# yarn
alias yr='yarn run'
alias fukjs='rm -rf node_modules;yarn install'
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
# terraform
alias tf='terraform'
# Wasmer
export WASMER_DIR="/Users/matt/.wasmer"
[ -s "$WASMER_DIR/wasmer.sh" ] && source "$WASMER_DIR/wasmer.sh"
export WASMTIME_HOME="$HOME/.wasmtime"
export PATH="$WASMTIME_HOME/bin:$PATH"