X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=.zshrc;h=0c2791814183cb998314535c1ecf8172cbab5d3b;hb=02956a86b40e9811a70ec269b04a68665b78d1f7;hp=b182e0ad76f8e4cf75c65319ec726434740d645d;hpb=eb0aa69bf69a687843faa9c2e24d58a509bee3f2;p=user%2Fhenk%2Fvcsh%2Fzsh.git diff --git a/.zshrc b/.zshrc index b182e0a..0c27918 100644 --- a/.zshrc +++ b/.zshrc @@ -2,36 +2,27 @@ # 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 +HISTFILE=~/.zsh_history +HISTSIZE=1000000000 +SAVEHIST=1000000000 -# 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 +## 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 -# colors for newt/whiptail (for debconf, needrestart, etc.) -# works better with selenized colorscheme -export NEWT_COLORS='checkbox=yellow,;roottext=yellow,' # where zsh looks for functions + +# add my own functions fpath=(~/.zsh_functions $fpath) @@ -50,21 +41,19 @@ hash -d fortunes=~/Data/henksfiles/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. +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" -# load sane options plugin before setting my own options -zinit load 'https://github.com/willghatch/zsh-saneopt' # options are usually independent and standalone # so they can stay at the top @@ -74,7 +63,7 @@ setopt CHASE_LINKS setopt AUTO_NAME_DIRS setopt BRACE_CCL -#setopt EXTENDED_GLOB +setopt EXTENDED_GLOB setopt MARK_DIRS setopt NUMERIC_GLOB_SORT setopt RC_EXPAND_PARAM @@ -102,11 +91,24 @@ setopt PRINT_EXIT_VALUE setopt AUTO_CONTINUE setopt NO_BG_NICE -#setopt LONG_LIST_JOBS +# display PID when suspending processes as well +setopt LONG_LIST_JOBS +# Report the status of background jobs immediately, rather than waiting until just before printing a prompt. +setopt NOTIFY +# 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. +setopt HASH_LIST_ALL +# 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. +setopt COMPLETE_IN_WORD +# use zsh field splitting +setopt NO_SH_WORD_SPLIT +# unset parameters should cause an error +# CONFLICTS WITH ZINIT +# CONFLICTS WITH ZGENOM +# setopt NO_UNSET # 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 source ~/.zsh_comprc @@ -125,22 +127,36 @@ 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 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' # 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' # source ~/.zsh_taskwarrior @@ -149,15 +165,12 @@ zinit load 'https://github.com/MichaelAquilina/zsh-you-should-use' # source ~/.zsh_functions_taskwarrior -# TODO break this up -source ~/.zsh_local - -# TODO break this up -source ~/.env_* +for f in ~/.zsh_local*(N) +do + source $f +done -typeset -U path - #zle -N zle-line-init #zle -N zle-keymap-select @@ -165,15 +178,46 @@ 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' # needs to be loaded close to the end because it hooks into other stuff # see https://github.com/zsh-users/zsh-syntax-highlighting -zinit load 'https://github.com/zsh-users/zsh-syntax-highlighting' - +source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + +source /usr/share/doc/fzf/examples/key-bindings.zsh +source /usr/share/doc/fzf/examples/completion.zsh + +# Use fd (https://github.com/sharkdp/fd) instead of the default find +# command for listing path candidates. +# - The first argument to the function ($1) is the base path to start traversal +# - See the source code (completion.{bash,zsh}) for the details. +_fzf_compgen_path() { + fdfind --hidden --follow --exclude ".git" . "$1" +} + +# Use fd to generate the list for directory completion +_fzf_compgen_dir() { + fdfind --type d --hidden --follow --exclude ".git" . "$1" +} # commands to run after initialization is complete #task awaiting