-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.zshrc
238 lines (205 loc) · 9.59 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
# History configurations
HISTFILE=$HOME/.zsh_history
HISTSIZE=10000
SAVEHIST=20000
setopt appendhistory
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
setopt hist_ignore_all_dups # ignore duplicated commands history list
setopt hist_ignore_space # ignore commands that start with space
setopt hist_verify # show command with history expansion to user before running it
# setopt share_history # share command history data
export WORDCHARS='*?_.~=&;!#$%^' #ctrl+<-(or backspace/del) will treat these as part of the word
# Check if Git dir exists
[[ -d ~/Git ]] ||
# || ==> right-side code will only exec if left side code == false
# ^ if [[ ! -d ~/Git ]]...
echo "Creating Git dir at ~" \
mkdir -p ~/Git
# Download Znap, if it's not there yet.
[[ -f ~/Git/zsh-snap/znap.zsh ]] ||
# explanation for this syntax:
# https://unix.stackexchange.com/questions/24684/confusing-use-of-and-operators
git clone --depth 1 -- \
https://github.com/marlonrichert/zsh-snap.git ~/Git/zsh-snap
source ~/Git/zsh-snap/znap.zsh
# `znap source` automatically downloads and starts your plugins.
# the line below makes shell load faster, but breaks nvim LSP
export NVM_LAZY_LOAD=true
export NVM_COMPLETION=true
znap source lukechilds/zsh-nvm
znap source zsh-users/zsh-syntax-highlighting
znap source marlonrichert/zsh-autocomplete
znap source zsh-users/zsh-autosuggestions
source $HOME/.profile # i keep some other configs here, you can comment this line out if you want
#######################
# copied from old zshrc>
setopt autocd # change directory just by typing its name
setopt correct # auto correct mistakes
setopt interactivecomments # allow comments in interactive mode
setopt magicequalsubst # enable filename expansion for arguments of the form ‘anything=expression’
setopt nonomatch # hide error message if there is no match for the pattern
setopt notify # report the status of background jobs immediately
setopt numericglobsort # sort filenames numerically when it makes sense
setopt promptsubst # enable command substitution in prompt
# custom prompt
PROMPT='%K{yellow}%F{black}%B${vcs_info_msg_0_}%k%b%F{green}%~ %F{white}%(!.#.$) '
RPROMPT='%F{green}%(?.√.%F{red}error code %?)%f %F{green}%n%F{white}'
# configure key keybindings
# bindkey -e # emacs key bindings
bindkey '^K' kill-whole-line # kill whole line
bindkey ' ' magic-space # do history expansion on space
bindkey '^[[3;5~' kill-word # ctrl + delete -> kill word foward
bindkey '^H' backward-kill-word # kill word left of cursor << this key can vary
# bindkey '^?' backward-kill-word # if the above doesn't work, try this
bindkey '^[[3~' delete-char # delete
bindkey '^[[1;5C' forward-word # ctrl + ->
bindkey '^[[1;5D' backward-word # ctrl + <-
bindkey '^B' backward-word # ctrl+B forward word
bindkey '^\' forward-word # ctrl+w forward word
bindkey '^[[5~' beginning-of-buffer-or-history # page up
bindkey '^[[6~' end-of-buffer-or-history # page down
bindkey '^[[H' beginning-of-line # home
bindkey '^[[F' end-of-line # end
bindkey '^[[Z' undo # shift + tab undo last action
bindkey '^ ' autosuggest-accept # accept autosuggest with ctrl + space
bindkey '^I' menu-complete # Tab to cycle through options
# enable completion features
autoload -Uz compinit && compinit
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # case insensitive tab completion
# enable git status
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:git:*' formats "(%b)"
zstyle ':vcs_info:git:*' formats "(%b)"
# autocomplete config
zstyle ':autocomplete:*' min-input 1 # Wait until 1 character have been typed, before showing completions.
# Wait this many seconds for typing to stop, before showing completions.
zstyle ':autocomplete:*' min-delay 0.09 # seconds (float)
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
ZSH_HIGHLIGHT_STYLES[unknown-token]=fg=red,bold
ZSH_HIGHLIGHT_STYLES[reserved-word]=fg=cyan,bold
ZSH_HIGHLIGHT_STYLES[suffix-alias]=fg=green,underline
ZSH_HIGHLIGHT_STYLES[global-alias]=fg=magenta
ZSH_HIGHLIGHT_STYLES[precommand]=fg=green,underline
ZSH_HIGHLIGHT_STYLES[commandseparator]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[autodirectory]=fg=green,underline
ZSH_HIGHLIGHT_STYLES[path]=underline
ZSH_HIGHLIGHT_STYLES[path_pathseparator]=
ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]=
ZSH_HIGHLIGHT_STYLES[globbing]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[history-expansion]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[command-substitution]=none
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]=fg=magenta
ZSH_HIGHLIGHT_STYLES[process-substitution]=none
ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]=fg=magenta
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=fg=magenta
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=fg=magenta
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]=none
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]=fg=yellow
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]=fg=yellow
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]=fg=yellow
ZSH_HIGHLIGHT_STYLES[rc-quote]=fg=magenta
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]=fg=magenta
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]=fg=magenta
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]=fg=magenta
ZSH_HIGHLIGHT_STYLES[assign]=none
ZSH_HIGHLIGHT_STYLES[redirection]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[comment]=fg=black,bold
ZSH_HIGHLIGHT_STYLES[named-fd]=none
ZSH_HIGHLIGHT_STYLES[numeric-fd]=none
ZSH_HIGHLIGHT_STYLES[arg0]=fg=green
ZSH_HIGHLIGHT_STYLES[bracket-error]=fg=red,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-1]=fg=blue,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-2]=fg=green,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-3]=fg=magenta,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-4]=fg=yellow,bold
ZSH_HIGHLIGHT_STYLES[bracket-level-5]=fg=cyan,bold
ZSH_HIGHLIGHT_STYLES[cursor-matchingbracket]=standout
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#999'
# Take advantage of $LS_COLORS for completion as well
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
export LESS_TERMCAP_mb=$'\E[1;31m' # begin blink
export LESS_TERMCAP_md=$'\E[1;36m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m' # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m' # begin underline
export LESS_TERMCAP_ue=$'\E[0m' # reset underline
#############################
# User configuration
#############################
function updater() {
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "${RED}apt update:${NC} \n" &&
sudo apt update &&
printf "${RED}upgrading:${NC} \n" &&
sudo apt upgrade --allow-downgrades --yes &&
printf "${RED}upgrading dist:${NC} \n" &&
sudo apt dist-upgrade --yes --allow-downgrades &&
printf "${RED}autoremove\n${NC}"
sudo apt autoremove --yes &&
printf "${RED}updating flatpak:${NC} \n" &&
flatpak -y update &&
printf "${RED}upgrading flatpak:${NC} \n" &&
flatpak -y upgrade &&
printf "${RED}remove unused?:${NC} \n" &&
flatpak uninstall --unused
printf "${RED}updating znap\n${NC}" &&
znap pull
}
# fix for an TILIX error i was having
if [[ -f /usr/bin/tilix || -f /bin/tilix ]]; then
if [[ ! -f /etc/profile.d/vte.sh ]]; then
echo "/etc/profile.d/vte.sh not found!!! tilix will throw an err... "
echo "running 'sudo ln -s /etc/profile.d/vte-2.91.sh /etc/profile.d/vte.sh'"
sudo ln -s /etc/profile.d/vte-2.91.sh /etc/profile.d/vte.sh
fi
if [ $TILIX_ID ] || [ $VTE_VERSION ]; then
source /etc/profile.d/vte.sh
fi
fi
#### custom aliases ayyy ####
# enable color support of ls, less and man, and also add handy aliases
alias l='ls -l --color=auto'
alias la='ls -A --color=auto'
alias ls='ls -lt --color=auto'
alias lss='ls -lah --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep -n -B 2 -A 2 --color=auto '
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias diff='diff --color=auto'
alias ip='ip --color=auto'
alias c='clear'
# ### git
alias ginit="git init"
alias gru="git remote update"
alias gpull="git pull"
alias gpush="git push"
alias gstats="git status"
alias gadd="git add"
alias gcommit="git commit"
### misc
# alias vim='vim -c "set number"' # show
alias nano='nano -l' # line nums
alias img='eog ' # img opener
alias rm='rm -ri' # recursive & ask to remove
alias rmf='rm -rf ' # recursive force -- caution
alias whois='whois -H' # hides legal stuff
alias myip='python3 /home/phlm/Documents/programming/python/my_ip/my_ip.py'
alias open='gio open 2>/dev/null ' # open with default app
alias py='python3'
alias pip3update="pip freeze --user | cut -d'=' -f1 | xargs -n1 pip install -U"
alias pingg='ping -c 10' # ping limiter
alias mkdir='mkdir -p '
# dotfile commands
alias backup_dconf="dconf dump / > $HOME/.backup/backup.dconf"
alias config="/usr/bin/git --git-dir=$HOME/.cfg --work-tree=$HOME"
alias dconf_restore="dconf load / < $HOME/.backup/backup.dconf"