-
Notifications
You must be signed in to change notification settings - Fork 0
/
.zshrc
418 lines (329 loc) · 14.4 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
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
export PATH="$HOME/bin:$PATH";
export PATH="/usr/local/sbin:$PATH"
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
# ### JAVA and JDK
# # To enable shims and autocompletion add to your profile:
# if which jenv > /dev/null; then eval "$(jenv init -)"; fi
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
# Path to your oh-my-zsh installation.
export ZSH="/Users/{username}/.oh-my-zsh"
# https://github.com/larkery/zsh-histdb
HISTDB_TABULATE_CMD=(sed -e $'s/\x1f/\t/g')
source $HOME/.oh-my-zsh/custom/plugins/zsh-histdb/sqlite-history.zsh
autoload -Uz add-zsh-hook
# _zsh_autosuggest_strategy_histdb_top() {
# local query="
# select commands.argv from history
# left join commands on history.command_id = commands.rowid
# left join places on history.place_id = places.rowid
# where commands.argv LIKE '$(sql_escape $1)%'
# group by commands.argv, places.dir
# order by places.dir != '$(sql_escape $PWD)', count(*) desc
# limit 1
# "
# suggestion=$(_histdb_query "$query")
# }
# ZSH_AUTOSUGGEST_STRATEGY=histdb_top
# Disable confirmation when using `rm`
setopt rmstarsilent
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
# ZSH_THEME="spaceship"
# Update theme to powerlevel10k
ZSH_THEME="powerlevel10k/powerlevel10k"
# autoload -U promptinit; promptinit
# prompt spaceship
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to automatically update without prompting.
DISABLE_UPDATE_PROMPT="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS=true
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
alias-finder
autojump
battery
brew
colored-man-pages
colorize
command-not-found
common-aliases
cp
dotenv
forklift
frontend-search
gatsby
git
git-aliases
git-extras
git-it-on
git-prompt
gitignore
jsontools
last-working-dir
macos
node
npm
nvm
pip
python
sudo
thefuck
themes
virtualenv
yarn
z
zsh-autosuggestions
zsh-interactive-cd
zsh-syntax-highlighting
)
ZSH_DOTENV_PROMPT=false
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='nano'
else
export EDITOR='nano'
fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
# export PATH="$PATH:$HOME/.rvm/bin"
# [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
# Enable tab completion for colorls
# https://github.com/athityakumar/colorls#installation
# source $(dirname $(gem which colorls))/tab_complete.sh
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
# Easier navigation: .., ..., ...., ....., ~ and -
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ~="cd ~" # `cd` is probably faster to type though
alias -- -="cd -"
# Shortcuts
alias d="cd ~/Documents"
alias dl="cd ~/Downloads"
alias dt="cd ~/Desktop"
alias g="git"
alias h="history"
alias hdb="histdb"
# Open VS Code
alias code="open -b com.microsoft.VSCode"
# List all files colorized in long format
alias l="ls -lF ${colorflag}"
# List all files colorized in long format, including dot files
alias la="ls -laF ${colorflag}"
# List only directories
alias lsd="ls -lF ${colorflag} | grep --color=never '^d'"
# Optimize all images in a folder
alias optimize='image_optim *.{jpg,png,gif,svg}'
# Get week number
alias week='date +%V'
# brew doctor
alias brewdoc='brew doctor'
# update homebrew
alias brewup='brew update'
# list outdated homebrew packages
alias brewout='brew outdated'
# Recursively delete `.DS_Store` files
alias cleanup="find . -type f -name '*.DS_Store' -ls -delete"
# Show/hide hidden files in Finder
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias hide="defaults write com.apple.finder AppleShowAllFiles -bool false && killall Finder"
# Hide/show all desktop icons (useful when presenting)
alias hidedesktop="defaults write com.apple.finder CreateDesktop -bool false && killall Finder"
alias showdesktop="defaults write com.apple.finder CreateDesktop -bool true && killall Finder"
# Empty the Trash on all mounted volumes and the main HDD
# Also, clear Apple’s System Logs to improve shell startup speed
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
# Use trash-cli to move deleted files to the trash instead of permanently deleting them.
alias rm="trash"
# Lock the screen (when going AFK)
alias afk="/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend"
# Reload the shell (i.e. invoke as a login shell)
alias reload="exec $SHELL -l"
alias src='reload'
alias stfu="osascript -e 'set volume output muted true'"
alias pumpitup="osascript -e 'set volume 7'"
# Find CPU hogs
alias mem_hogs='ps wwaxr -o pid,stat,%cpu,time,command | head -10'
# Show party parrot in terminal.
alias party='curl parrot.live'
# Watch Star Wars in ASCII.
# If telnet is not installed, run `brew install telnet` on macOS.
alias starwars='telnet towel.blinkenlights.nl'
# Turn the terminal-screen into matrix-style gibberish.
alias matrix='LC_ALL=C tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"'
alias venv="source ./venv/bin/activate"
alias py="python3"
# https://github.com/mergestat/mergestat
alias mergestat-summary="mergestat summarize commits"
alias mergestat-month="mergestat summarize commits --start \"-30 days\""
alias mergestat-year="mergestat summarize commits --start \"start of year\""
# https://github.com/arzzen/git-quick-stats
alias gstat="git-quick-stats"
# Git Commit Log Stats (https://gist.github.com/eyecatchup/3fb7ef0c0cbdb72412fc)
# List repository contributors by author name (sorted by name)
alias gitstats-name="git log --format='%aN' | sort -u"
# List total commits by author (sorted by commit count, with merge commits ignored)
alias gitstats-commit="git shortlog -sn --no-merges"
# List file change stats by author (ignore merge commits)
# alias gitstats-file="git log --no-merges --author="$(git config user.name)" --pretty=tformat: --numstat | awk '{inserted+=$1; deleted+=$2; delta+=$1-$2; ratio=deleted/inserted} END {printf "Commit stats:\n- Lines added (total).... %s\n- Lines deleted (total).. %s\n- Total lines (delta).... %s\n- Add./Del. ratio (1:n).. 1 : %s\n", inserted, deleted, delta, ratio }' -"
alias gitstats-file-count="git log --no-merges --shortstat --author="$(git config user.name)" | grep -E \"fil(e|es) changed\" | awk '{files+=$1; inserted+=$4; deleted+=$6; delta+=$4-$6; ratio=deleted/inserted} END {printf \"Commit stats:\n- Files changed (total).. %s\n- Lines added (total).... %s\n- Lines deleted (total).. %s\n- Total lines (delta).... %s\n- Add./Del. ratio (1:n).. 1 : %s\n\", files, inserted, deleted, delta, ratio }' -"
alias gitstats-all="git log --author="$(git config user.name)" --pretty=tformat: --numstat --since=\"18 Apr, 2021\" | awk '{inserted+=$1; deleted+=$2; delta+=$1-$2; ratio=deleted/inserted} END {printf \"Commit stats:\n- Lines added (total).... %s\n- Lines deleted (total).. %s\n- Total lines (delta).... %s\n- Add./Del. ratio (1:n).. 1 : %s\n\", inserted, deleted, delta, ratio }' -"
alias gitstats-all-count="git log --shortstat --author=\"{YOUR NAME HERE (e.g., Kyle Cobbler)}\" --since=\"19 Apr, 2021\" | awk '{inserted+=$1; deleted+=$2; delta+=$1-$2; ratio=deleted/inserted} END {printf \"Commit stats:\n- Lines added (total).... %s\n- Lines deleted (total).. %s\n- Total lines (delta).... %s\n- Add./Del. ratio (1:n).. 1 : %s\n\", inserted, deleted, delta, ratio }' -"
unset zle_bracketed_paste
# Disable confirmation when using `rm`
setopt rmstarsilent
### Added by Zplugin's installer
source "$HOME/.zplugin/bin/zplugin.zsh"
autoload -Uz _zplugin
(( ${+_comps} )) && _comps[zplugin]=_zplugin
### End of Zplugin installer's chunk
export PATH="/usr/local/opt/ruby/bin:$PATH"
export PATH=$PATH:$(ruby -e 'puts Gem.bindir')
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
# Enable tab completion for colorls
# https://github.com/athityakumar/colorls#installation
source $(dirname $(gem which colorls))/tab_complete.sh
SPACESHIP_PROMPT_ORDER=(
# venv # virtualenv section
# conda # conda virtualenv section
# pyenv # Pyenv section
# time # Time stampts section
user # Username section
dir # Current directory section
host # Hostname section
git # Git section (git_branch + git_status)
node # Node.js section
# package # Package version
# ruby # Ruby section
# golang # Go section
php # PHP section
# docker # Docker section
# dotnet # .NET section
# ember # Ember.js section
# terraform # Terraform workspace section
exec_time # Execution time
line_sep # Line break
# battery # Battery level and status
# vi_mode # Vi-mode indicator
# jobs # Background jobs indicator
exit_code # Exit code section
char # Prompt character
)
# SPACESHIP_RPROMPT_ORDER=(
# # battery
# time
# )
# RPROMPT='$(battery_pct_prompt)'
# PROMPT
SPACESHIP_USER_SHOW="always"
SPACESHIP_USER_COLOR='#FF1493'
SPACESHIP_DIR_COLOR='#40E0D0'
SPACESHIP_EXIT_CODE_SHOW="true"
SPACESHIP_PROMPT_ADD_NEWLINE="${SPACESHIP_PROMPT_ADD_NEWLINE=true}"
SPACESHIP_PROMPT_SEPARATE_LINE="${SPACESHIP_PROMPT_SEPARATE_LINE=true}"
SPACESHIP_PROMPT_FIRST_PREFIX_SHOW="${SPACESHIP_PROMPT_FIRST_PREFIX_SHOW=false}"
SPACESHIP_PROMPT_PREFIXES_SHOW="${SPACESHIP_PROMPT_PREFIXES_SHOW=true}"
SPACESHIP_PROMPT_SUFFIXES_SHOW="${SPACESHIP_PROMPT_SUFFIXES_SHOW=true}"
SPACESHIP_PROMPT_DEFAULT_PREFIX="${SPACESHIP_PROMPT_DEFAULT_PREFIX="via "}"
SPACESHIP_PROMPT_DEFAULT_SUFFIX="${SPACESHIP_PROMPT_DEFAULT_SUFFIX=" "}"
SPACESHIP_PROMPT_FIRST_PREFIX_SHOW='true'
SPACESHIP_CHAR_SYMBOL=">"
SPACESHIP_CHAR_SUFFIX=" "
SPACESHIP_TIME_SHOW="false"
SPACESHIP_TIME_12HR="true"
SPACESHIP_HOST_COLOR_SSH="#00FF7F"
SPACESHIP_GIT_STATUS_COLOR="#DC143C"
SPACESHIP_GIT_SYMBOL=" \UE702 "
SPACESHIP_GIT_STATUS_ADDED="%F{yellow} +%F{red}"
SPACESHIP_GIT_STATUS_UNTRACKED="%F{blue} ? %F{red}"
SPACESHIP_GIT_STATUS_DELETED="%F{green} x %F{red}"
SPACESHIP_GIT_STATUS_MODIFIED="%F{red} ! %F{red}"
SPACESHIP_GIT_STATUS_RENAMED="${SPACESHIP_GIT_STATUS_RENAMED="»"}"
SPACESHIP_GIT_STATUS_STASHED="${SPACESHIP_GIT_STATUS_STASHED="$"}"
SPACESHIP_GIT_STATUS_UNMERGED="${SPACESHIP_GIT_STATUS_UNMERGED="="}"
SPACESHIP_GIT_STATUS_AHEAD="${SPACESHIP_GIT_STATUS_AHEAD="⇡"}"
SPACESHIP_GIT_STATUS_BEHIND="${SPACESHIP_GIT_STATUS_BEHIND="⇣"}"
SPACESHIP_GIT_STATUS_DIVERGED="${SPACESHIP_GIT_STATUS_DIVERGED="⇕"}"
# NODE
# SPACESHIP_NODE_PREFIX=" "
SPACESHIP_NODE_SUFFIX=" "
SPACESHIP_NODE_SYMBOL="\UE79B "
SPACESHIP_NODE_COLOR="#00FA99"
SPACESHIP_VENV_COLOR='#87ff5f'
SPACESHIP_VENV_PREFIX="venv:("
SPACESHIP_VENV_SUFFIX=") "
# SPACESHIP_VENV_GENERIC_NAMES='(.venv)'
function set_win_title(){
echo -ne "\033]0; $(basename "$PWD") \007"
}
starship_precmd_user_func="set_win_title"
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc
export PHPBREW_SET_PROMPT=1
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
# https://starship.rs/config/#prompt
eval "$(starship init zsh)"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.'
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh