Mercurial > dotfiles
annotate dot_zshrc @ 539:8e2e42add3af
add zsh-histdb plugin
author | zegervdv <zegervdv@me.com> |
---|---|
date | Thu, 27 Jan 2022 16:33:56 +0100 |
parents | 0cc89a031281 |
children | 9036f18c5ad4 |
rev | line source |
---|---|
261 | 1 # vim:ft=zsh |
2 | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
3 source ~/.zsh/zsh-history-substring-search.zsh |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
4 export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=green,fg=black' |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
5 |
531 | 6 source ~/.zsh/zsh-autosuggestions.zsh |
7 | |
536
87f5a409ee83
Add zsh syntax highlighting in shell
zegervdv <zegervdv@me.com>
parents:
535
diff
changeset
|
8 source ~/.zsh/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh |
87f5a409ee83
Add zsh syntax highlighting in shell
zegervdv <zegervdv@me.com>
parents:
535
diff
changeset
|
9 |
539 | 10 source ~/.zsh/zsh-histdb/zsh-histdb.plugin.zsh |
11 source ~/.zsh/fzf-histdb.zsh | |
12 | |
13 _zsh_autosuggest_strategy_histdb_top_here() { | |
14 local query="select commands.argv from | |
15 history left join commands on history.command_id = commands.rowid | |
16 left join places on history.place_id = places.rowid | |
17 where places.dir LIKE '$(sql_escape $PWD)%' | |
18 and commands.argv LIKE '$(sql_escape $1)%' | |
19 group by commands.argv order by count(*) desc limit 1" | |
20 suggestion=$(_histdb_query "$query") | |
21 } | |
22 | |
23 ZSH_AUTOSUGGEST_STRATEGY=histdb_top_here | |
24 | |
534
aee830df7a88
Add zsh completions for fd and rg
zegervdv <zegervdv@me.com>
parents:
533
diff
changeset
|
25 fpath=(~/.zsh/completions $fpath) |
aee830df7a88
Add zsh completions for fd and rg
zegervdv <zegervdv@me.com>
parents:
533
diff
changeset
|
26 |
293
b29fc37fe1f0
Set TERM to xterm-256color
Zeger Van de Vannet <zegervdv@me.com>
parents:
289
diff
changeset
|
27 export TERM=xterm-256color |
b29fc37fe1f0
Set TERM to xterm-256color
Zeger Van de Vannet <zegervdv@me.com>
parents:
289
diff
changeset
|
28 |
261 | 29 export LC_ALL=$LANG |
30 | |
31 PROMPT='%F{cyan}%T%f %F{red}%m%f %F{blue}%~%b%f | |
265 | 32 %j -> ' |
261 | 33 |
34 | |
265 | 35 vim_ins_mode="%F{black}%K{yellow} INS %k%f" |
266
7a275f0d38e8
Use red to indicate Normal mode in zsh prompt
zegervdv <zegervdv@me.com>
parents:
265
diff
changeset
|
36 vim_cmd_mode="%F{white}%K{red} NRM %k%f" |
261 | 37 vim_mode=$vim_ins_mode |
38 | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
39 # Cursor mapping from nyquase/vi-mode |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
40 function select_cursor() { |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
41 case $KEYMAP in |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
42 # Block cursor in normal and visual mode |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
43 vicmd) echo -ne "\e[2 q";; |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
44 # Line cursor in insert mode |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
45 main|viins) echo -ne "\e[5 q";; |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
46 # Else Block cursor |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
47 *) echo -ne "\e[2 q";; |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
48 esac |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
49 } |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
50 |
261 | 51 function zle-keymap-select { |
52 vim_mode="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}" | |
53 zle reset-prompt | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
54 zle -R |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
55 select_cursor |
261 | 56 } |
57 zle -N zle-keymap-select | |
58 | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
59 function zle-line-init() { |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
60 echoti smkx |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
61 zle reset-prompt |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
62 select_cursor |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
63 } |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
64 zle -N zle-line-init |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
65 |
261 | 66 function zle-line-finish { |
67 vim_mode=$vim_ins_mode | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
68 echoti rmkx |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
69 echo -ne "\e[2 q" |
261 | 70 } |
71 zle -N zle-line-finish | |
72 | |
73 function TRAPINT() { | |
74 vim_mode=$vim_ins_mode | |
75 return $(( 128 + $1 )) | |
76 } | |
77 | |
535
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
78 autoload -Uz vcs_info |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
79 zstyle ':vcs_info:*' enable git hg |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
80 |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
81 zstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
82 zstyle ':vcs_info:*' formats '%F{4}%s%F{5}%F{3} @ %F{2}%b%f' |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
83 zstyle ':vcs_info:hg*:*' use-simple true |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
84 |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
85 precmd () { vcs_info } |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
86 |
f10b89e9aff3
Add git/hg info to zsh prompt
Zeger Van de Vannet <zegervdv@me.com>
parents:
534
diff
changeset
|
87 RPROMPT='${vcs_info_msg_0_} ${vim_mode}' |
261 | 88 |
89 zmodload -i zsh/complist | |
90 | |
91 bindkey -v | |
92 | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
93 bindkey '^[[A' history-substring-search-up |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
94 bindkey '^[[B' history-substring-search-down |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
95 bindkey "$terminfo[kcuu1]" history-substring-search-up |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
96 bindkey "$terminfo[kcud1]" history-substring-search-down |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
97 bindkey '^p' history-substring-search-up |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
98 bindkey '^n' history-substring-search-down |
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
99 |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
100 bindkey '^f' autosuggest-accept |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
101 |
537
0cc89a031281
map ctrl-u to push command to next prompt in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
536
diff
changeset
|
102 bindkey '^u' push-line-or-edit |
0cc89a031281
map ctrl-u to push command to next prompt in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
536
diff
changeset
|
103 |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
104 zmodload zsh/complist |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
105 bindkey -M menuselect 'h' vi-backward-char |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
106 bindkey -M menuselect 'k' vi-up-line-or-history |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
107 bindkey -M menuselect 'j' vi-down-line-or-history |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
108 bindkey -M menuselect 'l' vi-forward-char |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
109 |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
110 # Enter interactive search |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
111 bindkey -M menuselect '^xi' vi-insert |
531 | 112 |
263 | 113 export LESS_TERMCAP_mb=$(printf "\e[1;31m") |
114 export LESS_TERMCAP_md=$(printf "\e[1;31m") | |
115 export LESS_TERMCAP_me=$(printf "\e[0m") | |
116 export LESS_TERMCAP_se=$(printf "\e[0m") | |
117 export LESS_TERMCAP_so=$(printf "\e[1;44;33m") | |
118 export LESS_TERMCAP_ue=$(printf "\e[0m") | |
119 export LESS_TERMCAP_us=$(printf "\e[1;32m") | |
262
44d179225271
Add history substring search plugin
zegervdv <zegervdv@me.com>
parents:
261
diff
changeset
|
120 |
261 | 121 export CLICOLOR=1 |
122 export LS_COLORS='no=00;37:fi=00:di=00;33:ln=04;36:pi=40;33:so=01;35:bd=40;33;01:' | |
123 | |
124 # Options | |
125 setopt monitor | |
126 setopt auto_cd | |
127 setopt cdablevars | |
128 setopt pushd_ignore_dups | |
129 setopt interactive_comments | |
130 setopt append_history | |
131 setopt inc_append_history | |
132 setopt hist_ignore_dups | |
133 setopt hist_find_no_dups | |
134 setopt hist_reduce_blanks | |
135 setopt extended_history | |
136 setopt hist_expire_dups_first | |
137 setopt hist_verify | |
138 setopt share_history | |
139 setopt transient_rprompt | |
140 setopt prompt_subst | |
141 setopt multios | |
142 setopt correct_all | |
143 setopt autopushd | |
144 setopt pushdminus | |
145 setopt pushdsilent | |
146 setopt nobeep | |
147 setopt notify | |
148 REPORTTIME=5 | |
149 | |
150 HISTSIZE=3000 | |
151 SAVEHIST=3000 | |
152 HISTFILE=~/.zsh_history | |
153 | |
154 # Completion | |
155 setopt complete_in_word | |
156 setopt always_to_end | |
157 setopt auto_menu | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
158 setopt auto_param_slash |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
159 |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
160 # Enable completers |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
161 zstyle ':completion:*' completer _complete _approximate |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
162 |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
163 zstyle ':completion:*' use-cache on |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
164 zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache" |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
165 |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
166 # file list info |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
167 zstyle ':completion:*' file-list list |
261 | 168 |
169 # activate color-completion | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
170 zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} |
261 | 171 |
172 # format on completion | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
173 zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}' |
261 | 174 |
175 # insert all expansions for expand completer | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
176 zstyle ':completion:*:expand:*' tag-order all-expansions |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
177 zstyle ':completion:*:history-words' list false |
261 | 178 |
179 # activate menu | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
180 zstyle ':completion:*:history-words' menu yes |
261 | 181 |
182 # ignore duplicate entries | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
183 zstyle ':completion:*:history-words' remove-all-dups yes |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
184 zstyle ':completion:*:history-words' stop yes |
261 | 185 |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
186 zstyle ':completion:*:matches' group 'yes' |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
187 zstyle ':completion:*' group-name '' |
261 | 188 if [[ "$NOMENU" -eq 0 ]] ; then |
189 # if there are more than 5 options allow selecting from a menu | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
190 zstyle ':completion:*' menu select=5 |
261 | 191 else |
192 # don't use any menus at all | |
193 setopt no_auto_menu | |
194 fi | |
195 | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
196 zstyle ':completion:*:messages' format '%d' |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
197 zstyle ':completion:*:options' auto-description '%d' |
261 | 198 |
199 # describe options in full | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
200 zstyle ':completion:*:options' description 'yes' |
261 | 201 |
202 # complete manual by their section | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
203 zstyle ':completion:*:manuals' separate-sections true |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
204 zstyle ':completion:*:manuals.*' insert-sections true |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
205 zstyle ':completion:*:man:*' menu yes select |
261 | 206 |
207 # Search path for sudo completion | |
208 zstyle ':completion:*:sudo:*' command-path /usr/local/sbin \ | |
209 /usr/local/bin \ | |
210 /usr/sbin \ | |
211 /usr/bin \ | |
212 /sbin \ | |
213 /bin \ | |
214 /usr/X11R6/bin | |
215 | |
216 # provide .. as a completion | |
217 zstyle ':completion:*' specal-dirs .. | |
218 | |
219 # case insensitive path-completion | |
220 zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' | |
221 | |
222 # nvim completion | |
533
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
223 zstyle ':completion:*:*:nvim:*' ignored-patterns '*.(o|hex|elf|pyc|pdf|dup)' |
22fb4745cb1b
set more completion options in zsh
Zeger Van de Vannet <zegervdv@me.com>
parents:
531
diff
changeset
|
224 zstyle ':completion:*:*:nvim:*' file-sort modification |
261 | 225 |
226 autoload -U compinit && compinit | |
227 | |
228 # fg when pressing Ctrl+Z | |
229 function fancy-ctrl-z () { | |
230 if [[ $#BUFFER -eq 0 ]]; then | |
231 if [[ $(jobs | wc -l) -gt 0 ]]; then | |
232 BUFFER='fg' | |
233 zle accept-line | |
234 fi | |
235 else | |
236 zle push-input | |
237 zle clear-screen | |
238 fi | |
239 } | |
240 zle -N fancy-ctrl-z | |
241 bindkey '^Z' fancy-ctrl-z | |
242 | |
243 # Aliases | |
479 | 244 alias l="ls -haltr" |
245 alias ll="ls -haltr" | |
261 | 246 alias xclip='xclip -selection clipboard' |
269 | 247 alias view='nvim -R' |
261 | 248 |
249 # Exports | |
250 export XDG_CONFIG_HOME=$HOME/.config | |
251 export PATH=$HOME/bin:$PATH | |
252 | |
253 export EDITOR=nvim | |
254 export HGEDITOR=nvim | |
255 | |
504 | 256 export RIPGREP_CONFIG_PATH=$HOME/.config/ripgrep/ripgreprc |
506 | 257 export BAT_CONFIG_PATH=$HOME/.config/bat/config |
504 | 258 |
267 | 259 [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh |
539 | 260 |
261 bindkey '^r' histdb-fzf-widget | |
262 | |
267 | 263 [ -f ~/.zshrc.local ] && source ~/.zshrc.local |
491
f1d1eab204aa
Fix paths to nvim for SUDO_EDITOR
zegervdv <zegervdv@me.com>
parents:
490
diff
changeset
|
264 |
f1d1eab204aa
Fix paths to nvim for SUDO_EDITOR
zegervdv <zegervdv@me.com>
parents:
490
diff
changeset
|
265 # Must run after brew is loaded |
f1d1eab204aa
Fix paths to nvim for SUDO_EDITOR
zegervdv <zegervdv@me.com>
parents:
490
diff
changeset
|
266 export SUDO_EDITOR=$(which nvim) |
508 | 267 eval "$(direnv hook zsh)" |