-
Notifications
You must be signed in to change notification settings - Fork 0
/
zshrc
212 lines (162 loc) · 6.41 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
if [[ ! -f ~/.antigen.zsh ]]; then
curl -L git.io/antigen > ~/.antigen.zsh
fi
source ~/.antigen.zsh
antigen bundle woefe/git-prompt.zsh
antigen bundle zsh-users/zsh-autosuggestions
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#6f7275"
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
ZSH_AUTOSUGGEST_HISTORY_IGNORE="cd *"
# Don't autosuggest cd from history, I want only real suggestions
ZSH_AUTOSUGGEST_HISTORY_IGNORE="cd*"
# Don't autosuggest cd immediately, require at least one first letter of path
ZSH_AUTOSUGGEST_COMPLETION_IGNORE="cd |cd|cd */(a*/)#|cd *."
antigen bundle joshskidmore/zsh-fzf-history-search
ZSH_FZF_HISTORY_SEARCH_DATES_IN_SEARCH=0
antigen bundle wfxr/forgit
# This plugin must be last
antigen bundle zsh-users/zsh-syntax-highlighting
antigen apply
################################################################################
################################################################################
################################################################################
### My config
################################################################################
################################################################################
################################################################################
setopt prompt_subst
autoload -U colors && colors # Enable colors in prompt
# The following lines were added by compinstall
zstyle ':completion:*' matcher-list ''
# Tab completion
autoload -Uz compinit; compinit
unsetopt beep
# rm * sanity check
setopt RM_STAR_WAIT
alias ls='ls -Gbhp'
chpwd() {
ls -Gbhp
}
# cd to git root
cdg() {
cd `git rev-parse --show-toplevel`
}
# Do not require a leading '.' in a filename to be matched explicitly
setopt globdots
# https://direnv.net/
# Support .envrc file for directory-dependent env vars
eval "$(direnv hook zsh)"
################################################################################
# History
################################################################################
HISTFILE=~/.histfile
HISTSIZE=1000000
SAVEHIST=1000000
setopt hist_ignore_all_dups
setopt inc_append_history #this...
setopt share_history #...and this, will make history shared between terminals
# Remove superfluous blanks from each command line being added to the history
# list
setopt histreduceblanks
# Case insensitive completion
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}'
################################################################################
# Shortcuts
################################################################################
alias vim='nvim'
alias ev='vim ~/.config/nvim/init.lua'
alias ez='vim ~/.zshrc'
alias sz='source ~/.zshrc'
alias tmux='TERM=xterm-256color tmux'
alias tmx='tmux new -As0'
alias vm='autossh -t -M 20000 vm-tmux'
alias fixssh='eval $(tmux showenv -s SSH_AUTH_SOCK)'
################################################################################
# Git
################################################################################
gl_format_str="--pretty='format:%C(auto,yellow)%h %C(auto,blue)%>(30,trunc)%ad %C(auto,green)%<(20,trunc)%aN%C(auto,reset)%<(80,trunc)%s%C(auto,red)% gD% D'"
alias gb='git branch -vv'
alias gs='git status'
# alias gc='git commit'
alias gco='git checkout'
# alias gp='git pull'
alias gl="git log ${gl_format_str}"
alias glg='git lg'
alias gr='git remote -vv'
alias gwl='git worktree list -vv'
function gwa {
# Check if a branch name is provided as an argument
if [ -z "$1" ]; then
echo "Error: No branch name provided."
return 1
fi
branch_name="$1"
git fetch
worktree_dir="../$branch_name"
# Create the worktree with the given branch name
git worktree add "$worktree_dir" -b "ghedengran/$branch_name" HEAD --no-track
# Provide feedback to the user
if [ $? -eq 0 ]; then
echo "Worktree '$branch_name' created at '$worktree_dir'."
else
echo "Failed to create worktree."
fi
}
################################################################################
# Prompt
################################################################################
ZSH_GIT_PROMPT_SHOW_UPSTREAM=full
# ZSH_THEME_GIT_PROMPT_SHOW_UPSTREAM=1
ZSH_THEME_GIT_PROMPT_UPSTREAM_PREFIX="%{$fg[blue]%} -> "
ZSH_THEME_GIT_PROMPT_UPSTREAM_SUFFIX=""
RPROMPT=''
# %D{%d/%m/%y %H:%M:%S}
# Set up the prompt
PROMPT='┌─ (%D{%H:%M:%S}) %{$fg[green]%}%m%{$reset_color%} ${PWD/#$HOME/~}%{$fg[blue]%}%{$reset_color%} $(gitprompt)
└─ %(?.%{$fg[blue]%}.%{$fg[red]%})%(!.#.$)%{$reset_color%} '
################################################################################
# Fuzzy-find
################################################################################
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
# Nicer colors for fzf
export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS \
--color=fg:#c8d3f5,bg:#222436,hl:#ff966c \
--color=fg+:#c8d3f5,bg+:#2f334d,hl+:#ff966c \
--color=info:#82aaff,prompt:#86e1fc,pointer:#86e1fc \
--color=marker:#c3e88d,spinner:#c3e88d,header:#c3e88d"
################################################################################
# Kubernetes
################################################################################
alias k='kubectl'
# Kubectl krew plugin manager
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
[[ /usr/local/bin/kubectl ]] && source <(kubectl completion zsh)
[[ /usr/local/bin/minikube ]] && source <(minikube completion zsh)
evid() {
local pane_capture=$(tmux capture-pane -J -p)
local iid_regex='[a-z]{2,3}-[a-z0-9]{16}'
local iid=$(echo $pane_capture | grep -oE ".*$iid_regex.*" | fzf-tmux -d10 --multi --layout=reverse | awk "match(\$0, /$iid_regex/) {print substr(\$0, RSTART, RLENGTH)}")
LBUFFER+=$iid
}
# zle -N -M evid
zle -N evid
bindkey ^t evid
################################################################################
################################################################################
################################################################################
# END
################################################################################
################################################################################
################################################################################
if [ -f ~/.zshrc.local ]; then
source ~/.zshrc.local
fi
# use docker-machine default for docker client
# eval "$(docker-machine env default)"
# pnpm
export PNPM_HOME="/home/hedengran/.local/share/pnpm"
case ":$PATH:" in
*":$PNPM_HOME:"*) ;;
*) export PATH="$PNPM_HOME:$PATH" ;;
esac
# pnpm end