-
Notifications
You must be signed in to change notification settings - Fork 2
/
zshrc
189 lines (150 loc) · 4.96 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
#
# Z shell Settings
#
# start profiling zshrc
# zmodload zsh/zprof
# dotfiles home
export DOTFILES=$(dirname `readlink -f "${(%):-%x}"`)
# stop here in non-interactive mode
[ -z "$PS1" ] && return
# load zinit
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
[ ! -d $ZINIT_HOME ] && mkdir -p "$(dirname $ZINIT_HOME)"
[ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
source "${ZINIT_HOME}/zinit.zsh"
# local settings (early)
if [ -e ~/.zsh_local_early ]; then
source ~/.zsh_local_early
fi
# tmux
source ~/.shell/tmux
#
# history
#
[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
HISTSIZE=50000
SAVEHIST=10000
setopt extended_history # record timestamp of command in HISTFILE
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
setopt hist_ignore_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 inc_append_history # add commands to HISTFILE as they are executed
setopt share_history # share command history data
#
# general
#
unsetopt correct_all # disable auto correction
setopt extended_glob # extended globstring support
setopt autocd # enter directories by name only
setopt interactivecomments # recognize comments
zstyle ':completion:*' menu select=4 # tab completion menu
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # use smart-case completion
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*' # complete from middle of path
# additional shell settings (aliases, exports, etc.)
for file in ~/.shell/{fasd,aliases,audio,functions,nodes,private/*,exports,vconsole,video}; do
[ -r "$file" ] && source "$file"
done
# nnn
# for file in $DOTFILES/nnn/*.zsh; do
# [ -r "$file" ] && source "$file"
# done
# unset file
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# disable scroll lock
stty -ixon
# local settings (late)
if [ -e ~/.zsh_local_late ]; then
source ~/.zsh_local_late
fi
# fix keybindings
bindkey '^P' up-history
bindkey '^N' down-history
bindkey '^?' backward-delete-char
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward
bindkey "^[[H" beginning-of-line
bindkey "^A" beginning-of-line
bindkey "^[[F" end-of-line
bindkey "^E" end-of-line
bindkey "^[[1;3D" backward-word
bindkey "^[[1;5D" backward-word
bindkey "^[[1;3C" forward-word
bindkey "^[[1;5C" forward-word
bindkey "^[^?" backward-kill-word
#
# zinit
#
# nvm
zinit ice wait lucid
zinit light lukechilds/zsh-nvm
zinit snippet OMZ::lib/completion.zsh
zinit snippet OMZ::lib/directories.zsh
zinit snippet OMZ::lib/git.zsh
zinit snippet OMZ::plugins/git/git.plugin.zsh
zinit snippet OMZ::plugins/systemd/systemd.plugin.zsh
zinit snippet OMZ::plugins/taskwarrior/taskwarrior.plugin.zsh
zinit snippet OMZ::plugins/pip
# vi mode improvement
#zinit snippet OMZ::plugins/vi-mode/vi-mode.plugin.zsh
# emacs mode improvements
zinit snippet OMZ::lib/key-bindings.zsh
# prompt
zinit ice pick"async.zsh" src"pure.zsh"; zinit light sindresorhus/pure
# fasd-fzf integration
zinit light "khughitt/fzf-fasd"
# ls colors
# zinit ice atclone"dircolors -b LS_COLORS > c.zsh" atpull'%atclone' pick"c.zsh"
# zinit load trapd00r/LS_COLORS
# alias reminders
zinit light "djui/alias-tips"
# cntl-z <-> fg
zinit light "mdumitru/fancy-ctrl-z"
# pure prompt
fpath+=$HOME/.zsh/pure
# tab completion
autoload -Uz compinit && compinit
zinit cdreplay -q
# snakemake tab completion support
compdef _gnu_generic snakemake
# host-specific settings
if [ -e $DOTFILES/shell/local/$HOST.zsh ]; then
. $DOTFILES/shell/local/$HOST.zsh
fi
# remaining zinit plugins
zinit wait lucid for \
atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
zdharma-continuum/fast-syntax-highlighting \
blockf \
zsh-users/zsh-completions
# set fast-syntax-highlighting theme
fast-theme q-jmnemonic &> /dev/null
# directory-specific command history
# https://github.com/natethinks/jog
function zshaddhistory() {
echo "${1%%$'\n'}|${PWD} " >> ~/.zsh_history_ext
}
# mamba
export MAMBA_EXE="$HOME/.local/bin/micromamba";
export MAMBA_ROOT_PREFIX="$HOME/micromamba";
__mamba_setup="$("$MAMBA_EXE" shell hook --shell zsh --root-prefix "$MAMBA_ROOT_PREFIX" 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__mamba_setup"
else
alias micromamba="$MAMBA_EXE"
fi
unset __mamba_setup
# Load a few important annexes, without Turbo
zinit light-mode for \
zdharma-continuum/zinit-annex-as-monitor \
zdharma-continuum/zinit-annex-bin-gem-node \
zdharma-continuum/zinit-annex-patch-dl \
zdharma-continuum/zinit-annex-rust
# print greeting
if [ "$vconsole" = false ]; then
hostname | cut -d'.' -f1 | figlet | lolcat -S 33
fi
# stop profiling zshrc
# zprof