diff --git a/terminal/.config/zsh/.zshrc b/terminal/.config/zsh/.zshrc index 898652b..77254c7 100644 --- a/terminal/.config/zsh/.zshrc +++ b/terminal/.config/zsh/.zshrc @@ -1,5 +1,4 @@ #!/usr/bin/env zsh -# CONFDIR="${XDG_CONFIG_HOME:-$HOME/.config}" ZSHCONFDIR="$CONFDIR/zsh" @@ -17,20 +16,36 @@ zstyle :compinstall filename "$ZSHCONFDIR/.zshrc" compinit # End of lines added by compinstall -# load plugins -[ -e /usr/share/oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh ] && source /usr/share/oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh -[ -e /usr/share/oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh ] && source /usr/share/oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh -[ -e /usr/share/fzf/key-bindings.zsh ] && source /usr/share/fzf/key-bindings.zsh -#source /usr/share/nvm/init-nvm.sh -## find the correct installed tab-completion version -PLUG_FOLDER="/usr/share/zsh/plugins" -[ -e $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh -[ -e $PLUG_FOLDER/fzf-tab-bin-git/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab-bin-git/fzf-tab.plugin.zsh -# these need to be sourced after fzf-tab -[ -e $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh ] && source $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh -[ -e $PLUG_FOLDER/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && source $PLUG_FOLDER/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -[ -e $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh ] && source $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh -[ -e $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh ] && source $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh +# load plugins with the zr plugin manager +AUTO_NOTIFY_THRESHOLD=60 +TIPZ_TEXT='ALIAS:' +if command -v zr >/dev/null 2>&1; then + . <( + zr \ + molovo/tipz \ + ael-code/zsh-colored-man-pages \ + MichaelAquilina/zsh-auto-notify \ + junegunn/fzf.git/shell/key-bindings.zsh \ + Aloxaf/fzf-tab \ + zdharma-continuum/fast-syntax-highlighting \ + zsh-users/zsh-autosuggestions \ + zsh-users/zsh-completions \ + ) + +else # or manually + [ -e /usr/share/oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh ] && source /usr/share/oh-my-zsh/plugins/colored-man-pages/colored-man-pages.plugin.zsh + [ -e /usr/share/oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh ] && source /usr/share/oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh + [ -e /usr/share/fzf/key-bindings.zsh ] && source /usr/share/fzf/key-bindings.zsh + ## find the correct installed tab-completion version + PLUG_FOLDER="/usr/share/zsh/plugins" + [ -e $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab/fzf-tab.plugin.zsh + [ -e $PLUG_FOLDER/fzf-tab-bin-git/fzf-tab.plugin.zsh ] && source $PLUG_FOLDER/fzf-tab-bin-git/fzf-tab.plugin.zsh + # these need to be sourced after fzf-tab + [ -e $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh ] && source $PLUG_FOLDER/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh + [ -e $PLUG_FOLDER/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && source $PLUG_FOLDER/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh + [ -e $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh ] && source $PLUG_FOLDER/alias-tips/alias-tips.plugin.zsh + [ -e $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh ] && source $PLUG_FOLDER/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh +fi unset PLUG_FOLDER # simple fzf-tab settings @@ -39,7 +54,18 @@ zstyle ":fzf-tab:*" fzf-flags "--ansi" "--expect='$continuous_trigger,$print_que zstyle ':fzf-tab:*' fzf-command fzf # format colorful groups for different completion actions zstyle ':completion:*:descriptions' format '[%d]' -zstyle ':fzf-tab:*' show-group brief +# set list-colors to enable filename colorizing + +zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} +# force zsh not to show completion menu, which allows fzf-tab to capture the unambiguous prefix +zstyle ':completion:*' menu no + +# fzf-tab does not follow FZF_DEFAULT_OPTS by default since some setups can break completion +zstyle ':fzf-tab:*' fzf-flags --color=fg:1,fg+:2 +zstyle ':fzf-tab:*' fzf-bindings 'ctrl-j:accept' 'ctrl-a:toggle-all' 'ctrl-d:preview-down' 'ctrl-u:preview-up' +zstyle ':fzf-tab:*' continuous-trigger '/' +zstyle ':fzf-tab:*' switch-group '<' '>' + # use input as query string when completing zlua zstyle ':fzf-tab:complete:_zlua:*' query-string input # (experimental, may change in the future) @@ -55,10 +81,17 @@ local realpath=\${ctxt[IPREFIX]}\${ctxt[hpre]}\$in realpath=\${(Qe)~realpath} " # give a preview of commandline arguments when completing `kill` -zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm,cmd -w -w" -zstyle ':fzf-tab:complete:kill:argument-rest' extra-opts --preview=$extract'ps --pid=$in[(w)1] -o cmd --no-headers -w -w' --preview-window=down:3:wrap -# give a preview of directory by exa when completing cd -zstyle ':fzf-tab:complete:cd:*' extra-opts --preview=$extract'exa -1 --color=always $realpath' +zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w" +zstyle ':fzf-tab:complete:(kill|ps):argument-rest' fzf-preview \ + '[[ $group == "[process ID]" ]] && ps --pid=$word -o cmd --no-headers -w -w' +zstyle ':fzf-tab:complete:(kill|ps):argument-rest' fzf-flags --preview-window=down:3:wrap +# preview directory's content with eza when completing cd +zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always $realpath' +# show systemd unit status +zstyle ':fzf-tab:complete:systemctl-*:*' fzf-preview 'SYSTEMD_COLORS=1 systemctl status $word' +# env var contents +zstyle ':fzf-tab:complete:(-command-|-parameter-|-brace-parameter-|export|unset|expand):*' \ + fzf-preview 'echo ${(P)word}' # show hostname if we are in a distrobox environment if [ -n "$DISTROBOX_ENTER_PATH" ] && [ -f /run/.containerenv ]; then @@ -154,21 +187,21 @@ bindkey -v export KEYTIMEOUT=1 # Change cursor shape for different vi modes. function zle-keymap-select { - if [[ ${KEYMAP} == vicmd ]] || - [[ $1 = 'block' ]]; then - echo -ne '\e[2 q' + if [[ ${KEYMAP} == vicmd ]] || + [[ $1 = 'block' ]]; then + echo -ne '\e[2 q' - elif [[ ${KEYMAP} == main ]] || - [[ ${KEYMAP} == viins ]] || - [[ ${KEYMAP} = '' ]] || - [[ $1 = 'beam' ]]; then - echo -ne '\e[6 q' - fi + elif [[ ${KEYMAP} == main ]] || + [[ ${KEYMAP} == viins ]] || + [[ ${KEYMAP} = '' ]] || + [[ $1 = 'beam' ]]; then + echo -ne '\e[6 q' + fi } zle -N zle-keymap-select # Use beam shape cursor on startup. _fix_cursor() { - echo -ne '\e[6 q' + echo -ne '\e[6 q' } precmd_functions+=(_fix_cursor)