X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=.zshrc;h=4e9b59964912258b7480af3d4b05055ee8c74481;hb=20f2151b080ecfb381c1c8b9e047e24cba1cac63;hp=e04c8ea96e0ced8c43e5550b7e11877d3064e771;hpb=dab9e4d849c12589209c9d896c4f4ba2a2cae8ee;p=user%2Fhenk%2Fvcsh%2Fzsh.git diff --git a/.zshrc b/.zshrc index e04c8ea..4e9b599 100644 --- a/.zshrc +++ b/.zshrc @@ -2,139 +2,48 @@ # zmodload zsh/zprof -# exports are usually independent and standalone -# so they can stay at the top +# settings for the zsh don’t get exported # where to write history -export HISTFILE=~/.zsh_history -export HISTSIZE=1000000000 -export SAVEHIST=1000000000 - -export ANSIBLE_NOCOWS=1 -export ANSIBLE_STRATEGY=mitogen_linear - -export TEXMFCNF=${HOME}/.texlive: +HISTFILE=~/.zsh_history +HISTSIZE=1000000000 +SAVEHIST=1000000000 -export FZF_DEFAULT_COMMAND='fdfind --type f' - -# what is that for exactly? maybe taskwarrior? or timewarrior? +# print time needed for execution when it takes longer than this value REPORTTIME=10 + ## define word characters (for stuff like backward-word, forward-word, backward-kill-word,..) ## these are NOT separators but chars considered part of a word -#WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default - -# zsh you-should-use -export YSU_MODE=ALL - -# I want sbin executables available -export PATH=${PATH}:/usr/local/sbin:/sbin:/usr/sbin -export PATH=${PATH}:~/bin - -# colors for newt/whiptail (for debconf, needrestart, etc.) -# works better with selenized colorscheme -# everything that seems irrelevant is set to brown -NEWT_COLORS='' -# foreground seems irrelevant -NEWT_COLORS="${NEWT_COLORS};root=brown,blue" -# text in the root window -NEWT_COLORS="${NEWT_COLORS};roottext=yellow,blue" - -# box/window/button shadows -NEWT_COLORS="${NEWT_COLORS};shadow=brown,black" - -# boxes/windows themselves -NEWT_COLORS="${NEWT_COLORS};window=brown,lightgray" -# box/window titles -NEWT_COLORS="${NEWT_COLORS};title=yellow,lightgray" -# box/window borders -NEWT_COLORS="${NEWT_COLORS};border=gray,lightgray" - -# full buttons -NEWT_COLORS="${NEWT_COLORS};button=black,red" -# compact buttons -NEWT_COLORS="${NEWT_COLORS};compactbutton=black,lightgray" -# selected/active button -NEWT_COLORS="${NEWT_COLORS};actbutton=green,gray" - -# checkbox itself and text -NEWT_COLORS="${NEWT_COLORS};checkbox=black,blue" -# selection marker for checkbox -NEWT_COLORS="${NEWT_COLORS};actcheckbox=yellow,gray" - -# TODO FIXME: no clue what that is -NEWT_COLORS="${NEWT_COLORS};entry=yellow,brown" -# TODO FIXME: no clue what that is -NEWT_COLORS="${NEWT_COLORS};disentry=brown,yellow" - -# TODO FIXME: no clue what that is -NEWT_COLORS="${NEWT_COLORS};label=yellow,red" - -# unselected entries in menus -NEWT_COLORS="${NEWT_COLORS};listbox=lightgray,gray" -# selected entries in menus -NEWT_COLORS="${NEWT_COLORS};actsellistbox=yellow,blue" -# TODO FIXME: no clue what that is -NEWT_COLORS="${NEWT_COLORS};actlistbox=brown,red" -# TODO FIXME: no clue what that is -NEWT_COLORS="${NEWT_COLORS};sellistbox=black,brown" - -NEWT_COLORS="${NEWT_COLORS};textbox=black,lightgray" -NEWT_COLORS="${NEWT_COLORS};acttextbox=brown,green" - -# TODO FIXME: no clue what that is -NEWT_COLORS="${NEWT_COLORS};helpline=yellow,brown" - -# probably for gauges -NEWT_COLORS="${NEWT_COLORS};emptyscale=red" -NEWT_COLORS="${NEWT_COLORS};fullscale=blue" - - -# black -# darkgray -# brown -# yellow -# -# blue -# cyan -# gray -# green -# magenta -# red -# -# lightblue -# lightcyan -# lightgray -# lightgreen -# lightmagenta -# lightred +## these are NOT respected by e.g. vi-backward-kill-word, it seems +# WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default +## see below how to solve this with select-word-style module # where zsh looks for functions + +# add my own functions fpath=(~/.zsh_functions $fpath) # hashed directories are usually independent and standalone # so they can stay at the top -hash -d diary=~/Data/henksfiles/workinprogress/Dokumente/diary -hash -d lifedocs=~/Data/henksfiles/workinprogress/Dokumente/Leben +hash -d diary=~/Data/personal/henk/workinprogress/Dokumente/diary +hash -d lifedocs=~/Data/personal/henk/workinprogress/Dokumente/Leben hash -d bewerbung=~/Data/personal/henk/workinprogress/Dokumente/Arbeit/bewerbung -hash -d rezepte=~/Data/henksfiles/workinprogress/Dokumente/rezepte/cuisine -hash -d templates=~/Data/henksfiles/workinprogress/templates +hash -d rezepte=~/Data/personal/henk/workinprogress/Dokumente/rezepte/cuisine +hash -d templates=~/Data/personal/henk/workinprogress/templates hash -d gitignore=~/Data/public/software/gitignore hash -d doc=/usr/share/doc -hash -d TODO=~/Data/henksfiles/TODO/ -hash -d fortunes=~/Data/henksfiles/workinprogress/Dokumente/fortunes/ +hash -d TODO=~/Data/personal/henk/TODO/ +hash -d fortunes=~/Data/personal/henk/workinprogress/Dokumente/fortunes/ # aliases are usually independent and standalone source ~/.zsh_aliases -# TODO break this up or make functions or get rid? -source ~/.zsh_qemu # load plugin manager after all 'static' stuff is done -# source ~/Data/public/software/zinit/zinit.zsh source "${HOME}/.zgenom/zgenom.zsh" # Check for plugin and zgenom updates every 7 days # This does not increase the startup time. @@ -142,8 +51,6 @@ zgenom autoupdate # mostly static stuff, env vars -# zinit load 'https://github.com/joel-porquet/zsh-dircolors-solarized' -# zinit load "https://github.com/greymd/tmux-xpanes" zgenom load 'https://github.com/joel-porquet/zsh-dircolors-solarized' zgenom load "https://github.com/greymd/tmux-xpanes" @@ -153,9 +60,19 @@ zgenom load "https://github.com/greymd/tmux-xpanes" setopt AUTO_CD setopt CHASE_LINKS +# switch +/- when referring to the dirstack +setopt PUSHD_MINUS + +# Make cd push the old directory onto the directory stack +setopt AUTO_PUSHD + setopt AUTO_NAME_DIRS -setopt BRACE_CCL +# this should not be needed ever +# unclear why it is even implemented +# all relevant functionality should be possible without this anyway +# see #zsh@libera on 2024-04-14 +# setopt BRACE_CCL setopt EXTENDED_GLOB setopt MARK_DIRS setopt NUMERIC_GLOB_SORT @@ -163,9 +80,9 @@ setopt RC_EXPAND_PARAM #setopt WARN_CREATE_GLOBAL setopt GLOB_DOTS -# remove previous entries from history -setopt HIST_IGNORE_ALL_DUPS -# do not write lines starting with a space to history file +# Ignore a duplicate of the previous command +setopt HIST_IGNORE_DUPS +# Do not save commands starting with a space to history setopt HIST_IGNORE_SPACE # Remove superfluous blanks setopt HIST_REDUCE_BLANKS @@ -176,6 +93,7 @@ setopt EXTENDED_HISTORY # write line to history file when finished, not when started, to have correct runtime setopt INC_APPEND_HISTORY_TIME +# Error on a redirections which would overwrite an existing file setopt NO_CLOBBER setopt CORRECT setopt CORRECT_ALL @@ -201,7 +119,6 @@ setopt NO_SH_WORD_SPLIT # load before completion system initialization -# zinit load 'https://github.com/zsh-users/zsh-completions' zgenom load 'https://github.com/zsh-users/zsh-completions' # initialize completion system before loading plugins and external configs @@ -221,9 +138,18 @@ autoload ~/.zsh_functions/[^_]*(-.:t) autoload -Uz vcs_info -autoload -Uz zcalc -autoload -Uz zargs +zstyle ':vcs_info:*' enable git + +# similar to xargs +autoload -U zargs +# similar to rename or mmv +autoload -U zmv +autoload -U zln +autoload -U zcp + + +# zle customization # spawn editor on current command line autoload -Uz edit-command-line @@ -231,13 +157,16 @@ zle -N edit-command-line bindkey -M vicmd '^X^E' edit-command-line bindkey -M viins '^X^E' edit-command-line +# show globbing results live +autoload insert-files +zle -N insert-files +bindkey '^Xf' insert-files + #this mainly sets vars, binds keys, does zle stuff -# zinit load 'https://github.com/laurenkt/zsh-vimto' -zgenom load 'https://github.com/laurenkt/zsh-vimto' +# zgenom load 'https://github.com/laurenkt/zsh-vimto' # functions and an autoload, should be fine here -# zinit load 'https://github.com/MichaelAquilina/zsh-you-should-use' zgenom load 'https://github.com/MichaelAquilina/zsh-you-should-use' @@ -247,18 +176,12 @@ zgenom load 'https://github.com/MichaelAquilina/zsh-you-should-use' # source ~/.zsh_functions_taskwarrior -# TODO break this up -source ~/.zsh_local - -# TODO break this up -for f in ~/.env_*(N) +for f in ~/.zsh_local*(N) do source $f done -typeset -U path - #zle -N zle-line-init #zle -N zle-keymap-select @@ -266,9 +189,24 @@ typeset -U path # keybindings might have been changed by plugins, etc. # so they go more to the bottom +# the vi bindings for these do not respect WORDCHARS and are not replaced by the select-word-style functions +bindkey -M vicmd 'w' forward-word +bindkey -M vicmd 'b' backward-word +bindkey -M viins '^W' backward-kill-word + +# default vi history search is strange +bindkey -M viins '^R' history-incremental-search-backward + + +# better word matching +autoload -U select-word-style +select-word-style normal +# these characters do _not_ separate words but are part of words +zstyle ':zle:*' word-chars '*?[]~;!#$%^(){}<>' + +LP_ENABLE_TIME=1 # should probably be closer to the bottom than the top? -# zinit load 'https://github.com/nojhan/liquidprompt' zgenom load 'https://github.com/nojhan/liquidprompt'