]> git.netwichtig.de Git - user/henk/vcsh/zsh.git/blob - .zshrc
add function for registering puppet module repos in myrepos
[user/henk/vcsh/zsh.git] / .zshrc
1 # zprof only makes sense at the very top
2 # zmodload zsh/zprof
3
4
5 # settings for the zsh don’t get exported
6
7 # where to write history
8 HISTFILE=~/.zsh_history
9 HISTSIZE=1000000000
10 SAVEHIST=1000000000
11
12 # print time needed for execution when it takes longer than this value
13 REPORTTIME=10
14
15
16 ## define word characters (for stuff like backward-word, forward-word, backward-kill-word,..)
17 ## these are NOT separators but chars considered part of a word
18 ## these are NOT respected by e.g. vi-backward-kill-word, it seems
19 # WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default
20 ## see below how to solve this with select-word-style module
21
22
23 # where zsh looks for functions
24
25 # add my own functions
26 fpath=(~/.zsh_functions $fpath)
27
28
29 # hashed directories are usually independent and standalone
30 # so they can stay at the top
31 hash -d diary=~/Data/personal/henk/workinprogress/Dokumente/diary
32 hash -d lifedocs=~/Data/personal/henk/workinprogress/Dokumente/Leben
33 hash -d bewerbung=~/Data/personal/henk/workinprogress/Dokumente/Arbeit/bewerbung
34 hash -d rezepte=~/Data/personal/henk/workinprogress/Dokumente/rezepte/cuisine
35 hash -d templates=~/Data/personal/henk/workinprogress/templates
36 hash -d gitignore=~/Data/public/software/gitignore
37 hash -d doc=/usr/share/doc
38 hash -d TODO=~/Data/personal/henk/TODO/
39 hash -d fortunes=~/Data/personal/henk/workinprogress/Dokumente/fortunes/
40
41
42 # aliases are usually independent and standalone
43 source ~/.zsh_aliases
44
45
46 # load plugin manager after all 'static' stuff is done
47 source "${HOME}/.zgenom/zgenom.zsh"
48 # Check for plugin and zgenom updates every 7 days
49 # This does not increase the startup time.
50 zgenom autoupdate
51
52
53 # mostly static stuff, env vars
54 zgenom load 'https://github.com/joel-porquet/zsh-dircolors-solarized'
55 zgenom load "https://github.com/greymd/tmux-xpanes"
56
57
58 # options are usually independent and standalone
59 # so they can stay at the top
60 setopt AUTO_CD
61 setopt CHASE_LINKS
62
63 # switch +/- when referring to the dirstack
64 setopt PUSHD_MINUS
65
66 # Make cd push the old directory onto the directory stack
67 setopt AUTO_PUSHD
68
69 setopt AUTO_NAME_DIRS
70
71 # this should not be needed ever
72 # unclear why it is even implemented
73 # all relevant functionality should be possible without this anyway
74 # see #zsh@libera on 2024-04-14
75 # setopt BRACE_CCL
76 setopt EXTENDED_GLOB
77 setopt MARK_DIRS
78 setopt NUMERIC_GLOB_SORT
79 setopt RC_EXPAND_PARAM
80 #setopt WARN_CREATE_GLOBAL
81 setopt GLOB_DOTS
82
83 # Ignore a duplicate of the previous command
84 setopt HIST_IGNORE_DUPS
85 # Do not save commands starting with a space to history
86 setopt HIST_IGNORE_SPACE
87 # Remove superfluous blanks
88 setopt HIST_REDUCE_BLANKS
89 # expand history expansion for verification
90 setopt HIST_VERIFY
91 # save timestamp and runtime as well
92 setopt EXTENDED_HISTORY
93 # write line to history file when finished, not when started, to have correct runtime
94 setopt INC_APPEND_HISTORY_TIME
95
96 # Recognize comments on the command line
97 setopt INTERACTIVE_COMMENTS
98
99 # Error on a redirections which would overwrite an existing file
100 setopt NO_CLOBBER
101 setopt CORRECT
102 setopt CORRECT_ALL
103 #unsetopt NOMATCH
104 setopt PRINT_EXIT_VALUE
105
106 setopt AUTO_CONTINUE
107 setopt NO_BG_NICE
108 # display PID when suspending processes as well
109 setopt LONG_LIST_JOBS
110 # Report the status of background jobs immediately, rather than waiting until just before printing a prompt.
111 setopt NOTIFY
112 # Whenever  a  command completion or spelling correction is attempted, make sure the entire command path is hashed first.  This makes the first completion slower but avoids false reports of spelling errors.
113 setopt HASH_LIST_ALL
114 # If unset, the cursor is set to the end of the word if completion is started. Otherwise it stays there and completion is done from both ends.
115 setopt COMPLETE_IN_WORD
116 # use zsh field splitting
117 setopt NO_SH_WORD_SPLIT
118 # unset parameters should cause an error
119 # CONFLICTS WITH ZINIT
120 # CONFLICTS WITH ZGENOM
121 # setopt NO_UNSET
122
123
124 # load before completion system initialization
125 zgenom load 'https://github.com/zsh-users/zsh-completions'
126
127 # initialize completion system before loading plugins and external configs
128 source ~/.zsh_comprc
129
130
131 # TODO reconsider this
132 # source /usr/share/autojump/autojump.sh
133
134
135 # autoload all functions defined by me
136 # since only filenames are required we
137 # * follow symlinks
138 # * work only on plainfiles
139 # * take only the filename part without dir
140 autoload ~/.zsh_functions/[^_]*(-.:t)
141
142
143 autoload -Uz vcs_info
144 zstyle ':vcs_info:*' enable git
145
146 # similar to xargs
147 autoload -U zargs
148
149 # similar to rename or mmv
150 autoload -U zmv
151 autoload -U zln
152 autoload -U zcp
153
154
155 # zle customization
156
157 # spawn editor on current command line
158 autoload -Uz edit-command-line
159 zle -N edit-command-line
160 bindkey -M vicmd '^X^E' edit-command-line
161 bindkey -M viins '^X^E' edit-command-line
162
163 # show globbing results live
164 autoload insert-files
165 zle -N insert-files
166 bindkey '^Xf' insert-files
167
168
169 #this mainly sets vars, binds keys, does zle stuff
170 # zgenom load 'https://github.com/laurenkt/zsh-vimto'
171
172 # functions and an autoload, should be fine here
173 zgenom load 'https://github.com/MichaelAquilina/zsh-you-should-use'
174
175
176 # source ~/.zsh_taskwarrior
177 # source ~/.zsh_functions
178 # source ~/.zsh_functions_media
179 # source ~/.zsh_functions_taskwarrior
180
181
182 for f in ~/.zsh_local*(N)
183 do
184         source $f
185 done
186
187
188 #zle -N zle-line-init
189 #zle -N zle-keymap-select
190
191
192 # keybindings might have been changed by plugins, etc.
193 # so they go more to the bottom
194
195 # the vi bindings for these do not respect WORDCHARS and are not replaced by the select-word-style functions
196 bindkey -M vicmd 'w' forward-word
197 bindkey -M vicmd 'b' backward-word
198 bindkey -M viins '^W' backward-kill-word
199
200 # default vi history search is strange
201 bindkey -M viins '^R' history-incremental-search-backward
202
203
204 # better word matching
205 autoload -U select-word-style
206 select-word-style normal
207 # these characters do _not_ separate words but are part of words
208 zstyle ':zle:*' word-chars '*?[]~;!#$%^(){}<>'
209
210
211 LP_ENABLE_TIME=1
212 # should probably be closer to the bottom than the top?
213 zgenom load 'https://github.com/nojhan/liquidprompt'
214
215
216 # needs to be loaded close to the end because it hooks into other stuff
217 # see https://github.com/zsh-users/zsh-syntax-highlighting
218 source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
219
220 eval "$(zoxide init zsh)"
221
222 FZF_TMUX=1
223 FZF_CTRL_T_COMMAND='command fdfind --hidden'
224 FZF_ALT_C_COMMAND='command fdfind --hidden --type d'
225 source /usr/share/doc/fzf/examples/key-bindings.zsh
226 source /usr/share/doc/fzf/examples/completion.zsh
227
228 # Use fd (https://github.com/sharkdp/fd) instead of the default find
229 # command for listing path candidates.
230 # - The first argument to the function ($1) is the base path to start traversal
231 # - See the source code (completion.{bash,zsh}) for the details.
232 _fzf_compgen_path() {
233   fdfind --hidden --follow --exclude ".git" . "$1"
234 }
235
236 # Use fd to generate the list for directory completion
237 _fzf_compgen_dir() {
238   fdfind --type d --hidden --follow --exclude ".git" . "$1"
239 }
240
241 # commands to run after initialization is complete
242 #task awaiting
243 cat ~/.motd
244 # zprof