L2 Cache

Behold the power of |!

User Tools

Site Tools


configuration:zsh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
configuration:zsh [2014/12/25 14:12]
sjorge
configuration:zsh [2017/05/01 18:31]
sjorge [.zshrc]
Line 36: Line 36:
 ## .zshrc ## .zshrc
 # by Jorge Schrauwen <​jorge@blackdot.be>​ # by Jorge Schrauwen <​jorge@blackdot.be>​
-# Version ​20141225015+# Version ​20160621001
 #         ​YYYYMMDD###​ #         ​YYYYMMDD###​
  
Line 43: Line 43:
 # #
 # Change Log # Change Log
 +# - 20170501: --- - disabled auto update
 +# - 20160621: --- - optimizations
 +# - 20160621: fix - if .aliases is missing initial exit indicator was fasle
 +# - 20160320: fix - color ls on SmartOS, drop obd support
 +# - 20160219: fix - fix vncviewer alias
 +# - 20151128: --- - cleanup and removal of old code
 +# - 20151001: fix - support new pkgsrc layout on OSX
 +# - 20141225: new - added '​developer'​ theme (same as dual but with git helpers)
 +# - 20141225: new - switched to promptinit, converted themes and renamed minimal
 # - 20141225: new - added CMD_SAFE_WRAP (defaults to 1) # - 20141225: new - added CMD_SAFE_WRAP (defaults to 1)
 # - 20141225: --- - switch to selective nocorrect/​noglob # - 20141225: --- - switch to selective nocorrect/​noglob
Line 78: Line 87:
 # {{{ updater # {{{ updater
     NZSHRC="​https://​docu.blackdot.be/​getRaw.php?​onlyCode=true&​id=configuration:​zsh"​     NZSHRC="​https://​docu.blackdot.be/​getRaw.php?​onlyCode=true&​id=configuration:​zsh"​
-    CHECK_UPDATE=1 +    CHECK_UPDATE=0 
-    AUTO_UPDATE=1+    AUTO_UPDATE=0
 # }}} # }}}
  
 # {{{ options # {{{ options
     ## change directory ​     ## change directory ​
-    setopt auto_cd ​     # drop cd+    setopt auto_cd
     ​     ​
     ## enable command correction     ## enable command correction
-    ​#setopt correct +    setopt correct 
-    setopt correct_all  ​+    ​#setopt correct_all  ​
  
     ## prevent file overwrite     ## prevent file overwrite
Line 97: Line 106:
  
     ## superglobs     ## superglobs
-    #setopt extended_glob 
     unsetopt case_glob     unsetopt case_glob
     ​     ​
Line 118: Line 126:
     ​     ​
     ## make some commands safer     ## make some commands safer
-    CMD_SAFE_WRAP=1+    CMD_SAFE_WRAP=
 +    setopt mark_dirs
  
     ## include local options     ## include local options
Line 227: Line 236:
             sed -i -e "/​$1/​d"​ $HOME/​.ssh/​known_hosts             sed -i -e "/​$1/​d"​ $HOME/​.ssh/​known_hosts
         fi         fi
 +    }
 +    ​
 +    # zshenable helper
 +    zshenable() {
 +        case $OSTYPE in 
 +            linux*|darwin*|openbsd*)
 +                chsh -s $(which zsh)
 +            ;;
 +            solaris*)
 +                pfexec /​usr/​sbin/​usermod -s $(which zsh) $(id -n -u)
 +            ;;
 +            *)
 +                echo "No zshenable implemented for $OSTYPE."​
 +            ;;
 +        esac
 +    }
 +    ​
 +    # zshdisable helper
 +    zshdisable() {
 +        case $OSTYPE in 
 +            linux*|darwin*|openbsd*)
 +                chsh -s $(which bash)
 +            ;;
 +            solaris*)
 +                pfexec /​usr/​sbin/​usermod -s $(which bash) $(id -n -u)
 +            ;;
 +            *)
 +                echo "No zshdisable implemented for $OSTYPE."​
 +            ;;
 +        esac
     }     }
 # }}} # }}}
  
 # {{{ advanced # {{{ advanced
 +    ## cleanup aliases
 +    noglob unalias -m cd cp ls mv rm 
 +
     ## fix url quote'​s     ## fix url quote'​s
     if [[ ${ZSH_VERSION//​\./​} -ge 420 ]] ; then     if [[ ${ZSH_VERSION//​\./​} -ge 420 ]] ; then
Line 245: Line 287:
   ​   ​
         # colorization         # colorization
 +        eval $(dircolors)
         [ -f /​etc/​DIR_COLORS ] && eval $(dircolors -b /​etc/​DIR_COLORS)         [ -f /​etc/​DIR_COLORS ] && eval $(dircolors -b /​etc/​DIR_COLORS)
         [ -f ~/​.dir_colors ] && eval $(dircolors -b ~/​.dir_colors)         [ -f ~/​.dir_colors ] && eval $(dircolors -b ~/​.dir_colors)
Line 256: Line 299:
   ​   ​
         # LX BrandZ         # LX BrandZ
-        [ -d /native/​usr/​bin ​&& ​export PATH=$PATH:/​native/​usr/​bin +        ​if [ -d /native ]; then 
-        [ -d /​native/​sbin ] && [[ -n $WANT_SBIN ]] && ​export PATH=$PATH:/​native/​sbin +            ​export PATH=$PATH:/​native/​usr/​bin 
-        [ -d /​native/​usr/​sbin ] && [[ -n $WANT_SBIN ]] && ​export PATH=$PATH:/​native/​usr/​sbin+            ​if ​[ -n $WANT_SBIN ]; then 
 +                ​export PATH=$PATH:/​native/​sbin 
 +                export PATH=$PATH:/​native/​usr/​sbin 
 +            fi 
 +        fi
     ;; esac     ;; esac
     case $OSTYPE in solaris*)     case $OSTYPE in solaris*)
Line 269: Line 316:
         # add /usr/sbin if wanted         # add /usr/sbin if wanted
         [ $(echo $PATH | grep -c '/​usr/​sbin:'​) ​ -eq 0 ] && ​         [ $(echo $PATH | grep -c '/​usr/​sbin:'​) ​ -eq 0 ] && ​
-            ​[[ -n $WANT_SBIN ​]] && export PATH=$PATH:/​usr/​sbin+            [ -n $WANT_SBIN ] && export PATH=$PATH:/​usr/​sbin
  
         # check for gnu         # check for gnu
         export PATH=$(echo $PATH | /bin/sed -r '​s#:/​usr/​gnu/​s?​bin##​g'​)         export PATH=$(echo $PATH | /bin/sed -r '​s#:/​usr/​gnu/​s?​bin##​g'​)
-        [ -d /usr/gnu/bin && ​export PATH=$PATH:/​usr/​gnu/​bin +        ​if [ -d /usr/gnu ]; then 
-        [ -d /​usr/​gnu/​sbin ] && [[ -n $WANT_SBIN ​]] && export PATH=$PATH:/​usr/​gnu/​sbin +            ​export PATH=$PATH:/​usr/​gnu/​bin 
-   +            [ -n $WANT_SBIN ] && export PATH=$PATH:/​usr/​gnu/​sbin 
-        check for obd repository (omnios) + 
-        ​export PATH=$(echo $PATH | /​bin/​sed ​-r 's#/opt/obd/​s?​bin:##​g'​) +            selective gnu / colorization 
-        export MANPATH=$(echo $MANPATH | /​bin/​sed ​-r 's#/opt/obd/share/man:##g') +            ​[ ​-/usr/gnu/​bin/​sed ​] && alias sed='/usr/gnu/bin/sed
-        [ -/opt/obd/bin ] && ​export PATH=$PATH:/opt/obd/bin +            [ -/usr/gnu/bin/diff ] && ​alias diff='/usr/gnu/bin/diff' 
-        [ -/opt/obd/sbin ] && ​[[ -n $WANT_SBIN ]] && export PATH=$PATH:/opt/obd/sbin +            [ -/usr/gnu/bin/​tar ​] && ​alias tar='/usr/gnu/bin/​tar'​ 
-        [ -/opt/obd/share/man ] && ​export MANPATH=$MANPATH:/opt/obd/share/man+            [ -/usr/gnu/bin/rm ] && ​alias rm='/usr/gnu/bin/rm' 
 +        fi
   ​   ​
         # check for pkgsrc (smartos)         # check for pkgsrc (smartos)
         export PATH=$(echo $PATH | /bin/sed -r '​s#/​opt/​local/​s?​bin:##​g'​)         export PATH=$(echo $PATH | /bin/sed -r '​s#/​opt/​local/​s?​bin:##​g'​)
-        [ -d /opt/local/bin && ​export ​PATH=/​opt/​local/​bin:$PATH +        ​export MANPATH=$(echo $MANPATH | /bin/sed -r '​s#/​opt/​local/​man:##​g'​) 
-        [ -d /opt/local/sbin ] && [[ -n $WANT_SBIN ​]] && export PATH=/​opt/​local/​sbin:​$PATH +        if [ -d /opt/local ]; then 
-        ​[ -d /​opt/​local/​man ] && export MANPATH=/​opt/​local/​man:​$MANPATH+            ​export ​MANPATH=/​opt/​local/​man:$MANPATH 
 +            export ​PATH=/opt/local/bin:$PATH 
 +            ​[ -n $WANT_SBIN ] && export PATH=/​opt/​local/​sbin:​$PATH 
 +        ​fi
  
         # check for omniti repository (omnios)         # check for omniti repository (omnios)
         export PATH=$(echo $PATH | /bin/sed -r '​s#/​opt/​omni/​s?​bin:##​g'​)         export PATH=$(echo $PATH | /bin/sed -r '​s#/​opt/​omni/​s?​bin:##​g'​)
         export MANPATH=$(echo $MANPATH | /bin/sed -r '​s#/​opt/​omni/​share/​man:##​g'​)         export MANPATH=$(echo $MANPATH | /bin/sed -r '​s#/​opt/​omni/​share/​man:##​g'​)
-        [ -d /opt/omni/​bin ​&& export PATH=$PATH:/​opt/​omni/​bin +        ​if [ -d /opt/local ]; then 
-        [ -d /​opt/​omni/​sbin ] && [[ -n $WANT_SBIN ]] && export PATH=$PATH:/​opt/​omni/​sbin +            export MANPATH=$MANPATH:/​opt/​omni/​share/​man 
-        [ -d /​opt/​omni/​share/​man ] && ​export MANPATH=$MANPATH:/​opt/​omni/​share/​man +            export PATH=$PATH:/​opt/omni/bin 
- +            [ -n $WANT_SBIN ​] && export PATH=$PATH:/​opt/omni/sbin 
-        # check for sfw +        fi
-        ​export PATH=$(echo ​$PATH | /bin/sed -r 's#:/usr/sfw/s?bin##g') +
-        [ -d /​usr/​sfw/​bin ​] && export PATH=$PATH:/​usr/sfw/bin+
  
         # check for local         # check for local
         export PATH=$(echo $PATH | /bin/sed -r '​s#/​usr/​local/​s?​bin:##​g'​)         export PATH=$(echo $PATH | /bin/sed -r '​s#/​usr/​local/​s?​bin:##​g'​)
-        [ -d /usr/local/bin && ​export PATH=/​usr/​local/​bin:​$PATH +        ​if [ -d /usr/local ]; then 
-        [ -d /​usr/​local/​sbin ] && [[ -n $WANT_SBIN ​]] && export PATH=/​usr/​local/​sbin:​$PATH+            ​export PATH=/​usr/​local/​bin:​$PATH 
 +            [ -n $WANT_SBIN ] && export PATH=/​usr/​local/​sbin:​$PATH 
 +        fi
  
         # check for opencsw         # check for opencsw
         export PATH=$(echo $PATH | /bin/sed -r '​s#:/​opt/​csw/​s?​bin##​g'​)         export PATH=$(echo $PATH | /bin/sed -r '​s#:/​opt/​csw/​s?​bin##​g'​)
-        [ -d /opt/csw/bin && ​export PATH=$PATH:/​opt/​csw/​gnu:/​opt/​csw/​bin +        ​if [ -d /opt/csw ]; then 
-        [ -d /​opt/​csw/​sbin ] && [[ -n $WANT_SBIN ​]] && export PATH=$PATH:/​opt/​csw/​sbin+            ​export PATH=$PATH:/​opt/​csw/​gnu:/​opt/​csw/​bin 
 +            [ -n $WANT_SBIN ] && export PATH=$PATH:/​opt/​csw/​sbin 
 +        fi
  
         # colorization         # colorization
-        ​[ "$(which ls)" = "/usr/bin/ls" ] && ​alias ls='ls --color'​ +        ​case $(which ls) in 
- +          ​/opt/local/bin/lsalias ls='ls --color' ​;; 
-        # selective gnu / colorization +          /usr/bin/lsalias ls='ls --color'​ ;; 
-        [ "​$(which ls)" = "/usr/gnu/bin/ls" ] && ​alias ls='/​usr/​gnu/​bin/​ls --color=auto'​ +          ​/​usr/​gnu/​bin/​ls) ls='ls --color=auto' ​;; 
-        ​[ -e /usr/gnu/​bin/​grep ​] && ​alias grep='/​usr/​gnu/​bin/​grep --color=auto'​ +        ​esac 
-        [ -e /​usr/​gnu/​bin/​sed ] && ​alias sed='/​usr/​gnu/​bin/​sed'​ +        case $(which grep) in 
-        [ -e /​usr/​gnu/​bin/​diff ] && alias diff='/​usr/​gnu/​bin/​diff'​ +          ​/opt/local/bin/grepalias grep='​grep --color=auto' ​;; 
-        [ -e /​usr/​gnu/​bin/​tar ] && alias tar='/​usr/​gnu/​bin/​tar'​ +          /​usr/​gnu/​bin/​grep) alias grep='grep --color=auto' ​;; 
-        ​[ -e /​usr/​gnu/​bin/​rm ] && alias rm='/​usr/​gnu/​bin/​rm'​+        ​esac
     ;; esac     ;; esac
     case $OSTYPE in openbsd*)     case $OSTYPE in openbsd*)
Line 349: Line 402:
   ​   ​
         # pkgsrc         # pkgsrc
-        if [ -e /​usr/​pkg/​bin/​pkgin ]; then+        if [ -e /​opt/​pkg/​bin/​pkgin ]; then 
 +            export PATH=/​opt/​pkg/​gnu/​bin:/​opt/​pkg/​bin:/​opt/​pkg/​sbin:​$PATH 
 +            export MANPATH=/​opt/​pkg/​man:​$MANPATH 
 +            if [ -f ~/​.dir_colors ]; then 
 +                eval $(dircolors -b ~/​.dir_colors) 
 +                export ZLSCOLORS="​${LS_COLORS}"​ 
 +                unalias ls &> /dev/null 
 +                alias ls='ls --color=auto'​ 
 +            fi 
 +            alias pkgin='​sudo pkgin'​ 
 +        elif [ -e /​usr/​pkg/​bin/​pkgin ]; then
             export PATH=/​usr/​pkg/​gnu/​bin:/​usr/​pkg/​bin:/​usr/​pkg/​sbin:​$PATH             export PATH=/​usr/​pkg/​gnu/​bin:/​usr/​pkg/​bin:/​usr/​pkg/​sbin:​$PATH
             export MANPATH=/​usr/​pkg/​man:​$MANPATH             export MANPATH=/​usr/​pkg/​man:​$MANPATH
Line 361: Line 424:
         fi         fi
         ​         ​
-        ## helpers +        ## helpers ​        
-        function trash() { +        function ​vnc() {
-            local trash_dir="​${HOME}/​.Trash"​ +
-            local temp_ifs="​$IFS"​ +
-            IFS=$'​\n'​ +
-            for item in "​$@";​ do +
-                if [[ -e "​$item"​ ]]; then +
-                    item_name="​$(basename $item)"​ +
-                    if [[ -e "​${trash_dir}/​${item_name}"​ ]]; then +
-                        mv -f "​$item"​ "​${trash_dir}/​${item_name} $(date "​+%H-%M-%S"​)"​ +
-                    else +
-                        mv -f "​$item"​ "​${trash_dir}/"​ +
-                    fi +
-                fi +
-            done +
-            IFS=$temp_ifs +
-        } +
-         +
-        function ​vncviewer() {+
             which vncviewer &> /dev/null             which vncviewer &> /dev/null
             if [ $? -eq 0 ]; then             if [ $? -eq 0 ]; then
Line 388: Line 434:
         }         }
     ;; esac     ;; esac
-    ​ 
-    # zsh shortcuts 
-    case $OSTYPE in linux*|darwin*|openbsd*) 
-        alias zshenable='​chsh -s $(which zsh)' 
-        alias zshdisable='​chsh -s $(which bash)' 
-    ;; esac  
-    case $OSTYPE in solaris*) 
-        alias zshenable='​pfexec /​usr/​sbin/​usermod -s $(which zsh) $(id -n -u)' 
-        alias zshdisable='​pfexec /​usr/​sbin/​usermod -s $(which bash) $(id -n -u)' 
-    ;; esac  
  
     ## host specific     ## host specific
     case ${HOST:r} in     case ${HOST:r} in
-        (axion*|tachyon*) +        (axion*|tachyon*|photon*)
-            # add a little info banner +
-            if [[ $SHLVL -eq 1 ]] ; then +
-                clear +
-                echo +
-                print -P "​\e[1;​33m Welcome to: \e[1;​34m%m"​ +
-                print -P "​\e[1;​33m Running: \e[1;​34m`uname -srm`\e[1;​33m on \e[1;​34m%l"​ +
-                print -P "​\e[1;​33m It is:\e[1;34m %D{%r} \e[1;33m on \e[1;​34m%D{%A %b %f %G}" +
-                echo +
-                tput sgr0 +
-            fi +
             # proper UTF-8             # proper UTF-8
             export LANG=en_US.UTF-8             export LANG=en_US.UTF-8
Line 419: Line 444:
             PROMPT_HOST_COLOR=green             PROMPT_HOST_COLOR=green
         ;;         ;;
-        (artemis*|monolith*)+        (exosphere*|crust*)
             PROMPT_HOST_COLOR=red             PROMPT_HOST_COLOR=red
         ;;         ;;
Line 438: Line 463:
     ## complete from withing word     ## complete from withing word
     setopt complete_in_word     setopt complete_in_word
 +    setopt always_to_end
  
     ## complete aliases     ## complete aliases
     setopt complete_aliases     setopt complete_aliases
  
 +    ## enable caching
 +    zstyle ':​completion::​complete:​*'​ use-cache on
 +    zstyle ':​completion::​complete:​*'​ cache-path ~/.zcache
 +    ​
 +    ## enable case-insensitive completion
 +    zstyle ':​completion:​*'​ matcher-list '​m:​{a-zA-Z}={A-Za-z}'​ '​r:​|[._-]=* r:|=*' 'l:|=* r:|=*'
 +    ​
 +    ## various tweaks
 +    zstyle '​*'​ single-ignored show
 +    ​
 +    zstyle ':​completion:​*'​ completer _complete _match _approximate
 +    zstyle ':​completion:​*:​match:​*'​ original only
 +    zstyle ':​completion:​*:​approximate:​*'​ max-errors 1 numeric
 +    ​
 +    zstyle -e ':​completion:​*:​approximate:​*'​ max-errors '​reply=($((($#​PREFIX+$#​SUFFIX)/​3))numeric)'​
 +    ​
 +    ## history
 +    zstyle ':​completion:​*:​history-words'​ stop yes
 +    zstyle ':​completion:​*:​history-words'​ remove-all-dups yes
 +    zstyle ':​completion:​*:​history-words'​ list false
 +    zstyle ':​completion:​*:​history-words'​ menu yes
 +    ​
 +    ## directories
 +    zstyle ':​completion:​*:​default'​ list-colors ${(s.:​.)LS_COLORS}
 +    zstyle ':​completion:​*:​*:​cd:​*'​ tag-order local-directories directory-stack path-directories
 +    zstyle ':​completion:​*:​*:​cd:​*:​directory-stack'​ menu yes select
 +    zstyle ':​completion:​*:​-tilde-:​*'​ group-order '​named-directories'​ '​path-directories'​ '​users'​ '​expand'​
 +    zstyle ':​completion:​*'​ squeeze-slashes true
 +    ​
 +    ## ignore completions for commands that we dont have
 +    zstyle ':​completion:​*:​functions'​ ignored-patterns '​(_*|pre(cmd|exec))'​
 +    ​
 +    ## array completion
 +    zstyle ':​completion:​*:​*:​-subscript-:​*'​ tag-order indexes parameters
 +    ​
 +    ## group matches and describe
 +    zstyle ':​completion:​*:​*:​*:​*:​*'​ menu select
 +    zstyle ':​completion:​*:​matches'​ group '​yes'​
 +    zstyle ':​completion:​*:​options'​ description '​yes'​
 +    zstyle ':​completion:​*:​options'​ auto-description '​%d'​
 +    zstyle ':​completion:​*:​corrections'​ format ' %F{green}-- %d (errors: %e) --%f'
 +    zstyle ':​completion:​*:​descriptions'​ format ' %F{yellow}-- %d --%f'
 +    zstyle ':​completion:​*:​messages'​ format ' %F{purple} -- %d --%f'
 +    zstyle ':​completion:​*:​warnings'​ format ' %F{red}-- no matches found --%f'
 +    zstyle ':​completion:​*:​default'​ list-prompt '%S%M matches%s'​
 +    zstyle ':​completion:​*'​ format ' %F{yellow}-- %d --%f'
 +    zstyle ':​completion:​*'​ group-name ''​
 +    zstyle ':​completion:​*'​ verbose yes
 +    ​
     ## pretty menu's     ## pretty menu's
     zstyle ':​completion:​*'​ menu select=1     zstyle ':​completion:​*'​ menu select=1
Line 448: Line 523:
     setopt list_rows_first ​ # use row list if possible     setopt list_rows_first ​ # use row list if possible
  
-    ## Ignore completions for commands that we dont have +    ## prevent re-suggestion 
-    zstyle ':​completion:​*:​functions' ​ignored-patterns '_*'+    zstyle ':​completion:​*:​(scp|rm|kill|diff):​*' ​ignore-line yes 
 +    #zstyle ':​completion:​*:​rm:​*'​ file-patterns '*:all-files'
  
-    ​## enable case-insensitive completion +    ## enable killall menu (linux)
-    zstyle ':​completion:​*'​ matcher-list '​m:​{a-zA-Z}={A-Za-z}'​ +
- +
-    ## enable caching +
-    zstyle ':​completion::​complete:​*'​ use-cache on +
-    zstyle ':​completion::​complete:​*'​ cache-path ~/.zcache +
- +
-    ## Prevent re-suggestion +
-    zstyle ':​completion:​*:​rm:​*'​ ignore-line yes +
-    zstyle ':​completion:​*:​scp:​*'​ ignore-line yes +
-    zstyle ':​completion:​*:​ls:​*'​ ignore-line yes +
- +
-    ​## enable killall menu+
     zstyle ':​completion:​*:​processes-names'​ command 'ps -u $(whoami) -o comm='     zstyle ':​completion:​*:​processes-names'​ command 'ps -u $(whoami) -o comm='
     zstyle ':​completion:​*:​processes-names'​ menu yes select     zstyle ':​completion:​*:​processes-names'​ menu yes select
     zstyle ':​completion:​*:​processes-names'​ force-list always ​   ​     zstyle ':​completion:​*:​processes-names'​ force-list always ​   ​
  
-    ## enable kill menu +    ## enable kill menu (linux) ​   
-    zstyle ':​completion:​*:​kill:*' command 'ps -u $(whoami) -o pid,​pcpu,​pmem,​cmd'+    ​case $OSTYPE in  
 +        linux*|darwin*|openbsd*) 
 +            if [ $(id -u) -eq 0 ]; then 
 +                ​zstyle ':​completion:​*:​*:*:​*:​processes'​ command 'ps -A -o pid,​user,​pcpu,​pmem,​args -w' 
 +            else 
 +                zstyle ':​completion:​*:​*:​*:​*:​processes' command 'ps -u $(whoami) -o pid,user,pcpu,pmem,args -w' 
 +            fi 
 +        ;; 
 +        solaris*) 
 +            if [ $(id -u) -eq 0 ]; then 
 +                zstyle ':​completion:​*:​*:​*:​*:​processes'​ command 'ps -A -o pid,​user,​pcpu,​pmem,​args'​ 
 +            else 
 +                zstyle ':​completion:​*:​*:​*:​*:​processes'​ command 'ps -u $(whoami) -o pid,​user,​pcpu,​pmem,​args'​ 
 +            fi 
 +        ;; 
 +    esac
     zstyle ':​completion:​*:​*:​kill:​*:​processes'​ list-colors '=(#b) #​([0-9]#​)*=0=01;​32'​     zstyle ':​completion:​*:​*:​kill:​*:​processes'​ list-colors '=(#b) #​([0-9]#​)*=0=01;​32'​
     zstyle ':​completion:​*:​*:​kill:​*'​ menu yes select     zstyle ':​completion:​*:​*:​kill:​*'​ menu yes select
-    zstyle ':​completion:​*:​kill:​*'​ force-list always +    zstyle ':​completion:*:​*:​kill:​*'​ force-list always 
-    zstyle ':​completion:​*:​kill:​*'​ insert-ids single+    zstyle ':​completion:*:​*:​kill:​*'​ insert-ids single 
 +     
 +    ## simple pargs complete 
 +    case $OSTYPE in  
 +        solaris*) 
 +            compdef _pids pargs 
 +            zstyle ':​completion:​*:​*:​pargs:​*:​processes'​ list-colors '=(#b) #​([0-9]#​)*=0=01;​32'​ 
 +            zstyle ':​completion:​*:​*:​pargs:​*'​ menu yes select 
 +            zstyle ':​completion:​*:​*:​pargs:​*'​ force-list always 
 +            zstyle ':​completion:​*:​*:​pargs:​*'​ insert-ids single 
 +        ;; 
 +    esac 
 +     
 +    ## man pages 
 +    zstyle ':​completion:​*:​manuals'​ separate-sections true 
 +    zstyle ':​completion:​*:​manuals.(^1*)'​ insert-sections true
  
     ## enable make completion     ## enable make completion
     compile=(all clean compile disclean install remove uninstall)     compile=(all clean compile disclean install remove uninstall)
     compctl -k compile make     compctl -k compile make
- +    ​ 
-    ## ssh host completion+    ## user completion cleanup 
 +    zstyle ':​completion:​*:​*:​*:​users'​ ignored-patterns \ 
 +        adm amanda apache avahi backup beaglidx bin cacti canna clamav daemon \ 
 +        dladm dbus distcache dovecot fax ftp games gdm gkrellmd gopher gnats \ 
 +        hacluster haldaemon halt hsqldb ident junkbust ldap lp irc list libuuid \ 
 +        listen mdns mail mailman mailnull mldonkey mysql man messagebus \ 
 +        netadm netcfg nagios noaccess nobody4 nuucp \ 
 +        named netdump news nfsnobody nobody nscd ntp nut nx openvpn openldap \ 
 +        operator pcap pkg5srv postfix postgres proxy privoxy pulse pvm quagga radvd \ 
 +        rpc rpcuser rpm shutdown statd squid sshd sync sys syslog uucp vcsa \ 
 +        smmsp svctag upnp unknown webservd www-data xfs xvm zfssnap '​_*'​ 
 +         
 +    ## hostname ​completion
     if [ ! -f ~/​.ssh/​config ]; then     if [ ! -f ~/​.ssh/​config ]; then
         [ -f ~/​.ssh/​known_hosts ] && rm ~/​.ssh/​known_hosts         [ -f ~/​.ssh/​known_hosts ] && rm ~/​.ssh/​known_hosts
Line 486: Line 592:
         chmod 0600 ~/​.ssh/​config         chmod 0600 ~/​.ssh/​config
     fi     fi
-    zstyle -e ':​completion::*:ssh:​*:​hosts'​ hosts '​reply=(${=${${(f)"​$(cat {/​etc/​ssh_,​~/​.ssh/​known_}hosts(|2)(N) /​dev/​null)"​}%%[#​ ]*}//,/ })' +    zstyle -e ':​completion:​*:​hosts'​ hosts '​reply=( 
-    ​zstyle ':completion:*:ssh:*' ​group-order hosts-domain hosts-host users hosts-ipaddr+        ${=${=${=${${(f)"​$(cat {/​etc/​ssh_,​~/​.ssh/​known_}hosts(|2)(N) ​2>/​dev/​null)"​}%%[#​]*}//​\]:​[0-9]*/ ​}//,/ }//\[/ } 
 +        ${=${(f)"$(cat /​etc/​hosts(|)(N) <<​(ypcat hosts 2>/​dev/​null))"​}%%\#​*} 
 +        ​${=${${${${(@M)${(f)"​$(cat ~/​.ssh/​config 2>/​dev/​null)"​}:#Host *}#Host }:#*\**}:#*\?*}} 
 +    )'
  
-    ## ssh user completion ​cleanup +    ## ssh/​scp/​rsync 
-    zstyle ':​completion:​*:​ssh:​*:​users'​ ignored-patterns ​\ +    zstyle ':completion:​*:​(scp|rsync):​*'​ tag-order '​hosts:​-host:​host hosts:​-domain:​domain hosts:​-ipaddr:​ip\ address *' 
-        adm alias apache at bin cron cyrus daemon distcache exim ftp games gdm \ +    zstyle ':​completion:​*:​(scp|rsync):​*'​ group-order users files all-files hosts-domain hosts-host hosts-ipaddr 
-        guest gopher haldaemon halt mail man messagebus mysql named news nobody nut \ +    zstyle ':​completion:​*:​ssh:​*' tag-order 'hosts:-host:host hosts:​-domain:​domain hosts:​-ipaddr:​ip\ address *' 
-        nfsnobody lp operator portage postfix postgres postmaster qmaild qmaill qmailp \ +    zstyle ':​completion:​*:​ssh:​*'​ group-order ​users hosts-domain hosts-host users hosts-ipaddr 
-        qmailq qmailr qmails rpmbuild rpc rpcuser shutdown smmsp squid sshd sync saslauth \ +    zstyle ':​completion:​*:​(ssh|scp|rsync):​*:​hosts-host' ignored-patterns ​'​*(.|:​)*'​ loopback ip6-loopback localhost ip6-localhost ip6-allnodes ip6-allrouters ip6-localnet ip6-mcastprefix broadcasthost 
-        uucp vcsa vpopmail xfs +    ​zstyle ':​completion:​*:​(ssh|scp|rsync):​*:​hosts-domain'​ ignored-patterns '<​->​.<​->​.<​->​.<​->'​ '​^[-[:​alnum:​]]##​(.[-[:​alnum:​]]##​)##'​ '​*@*'​ 
 +    ​zstyle ':​completion:​*:​(ssh|scp|rsync):​*:​hosts-ipaddr'​ ignored-patterns '​^(<​->​.<​->​.<​->​.<​->​|(|::​)([[:​xdigit:​].]##:​(#​c,​2))##​(|%*))'​ '​127.0.0.<​->'​ '​255.255.255.255'​ '::​1'​ '​fe80::​*'​ '​fe00::​*'​ '​ff00::​*'​ '​ff02::​*'​
 # }}} # }}}
  
Line 509: Line 619:
     alias mv='​nocorrect mv'     alias mv='​nocorrect mv'
     alias rm="​nocorrect ${aliases[rm]:​-rm}"​     alias rm="​nocorrect ${aliases[rm]:​-rm}"​
 +    which sshpass &> /dev/null ; [ $? -eq 0 ] && alias sshpass='​nocorrect sshpass'​
     ​     ​
     ## disable globbing.     ## disable globbing.
Line 518: Line 629:
     alias scp='​noglob scp'     alias scp='​noglob scp'
     alias sftp='​noglob sftp'     alias sftp='​noglob sftp'
-    alias ssh='​noglob ​sftp'+    alias ssh='​noglob ​ssh'
 # }}} # }}}
  
Line 532: Line 643:
  
 # {{{ prompt # {{{ prompt
-    # enable colors module+    ​## enable colors ​and prompt ​module
     autoload -U colors && colors     autoload -U colors && colors
 +    autoload -Uz promptinit && promptinit
  
-    # utf8 checkmarks+    #checkmarks
     PROMPT_CO='​.'​     PROMPT_CO='​.'​
     PROMPT_CE='​!'​     PROMPT_CE='​!'​
-    case $LANG in *UTF-8) 
-        case $TERM in (xterm*) 
-            if [[ -z $NOFANCY_PROMPT ]] ; then 
-                PROMPT_CO='​✓'​ 
-                PROMPT_CE='​✗'​ 
-            fi 
-        ;; esac 
-    ;; esac 
  
-    ​[[ -z $THEME ]] && THEME=minimal +    ​## create themes 
-    ​case $THEME in +    ​prompt_gentoo_setup() { 
-        ​gentoo) +        PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' 
-            ​PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' +        ​RPROMPT=''​ 
-        ​;; +    } 
-        ​gentoo_server+    prompt_themes=($prompt_themes gentoo
-            PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' +     
-        ​;; +    prompt_gentoo_server_setup() { 
-        ​minimal+        ​PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' 
-            PROMPT=$'​%{$fg_bold[grey]%}-(%{$reset_color%}%{$fg_bold[white]%}%1~%{$reset_color%}%{$fg_bold[grey]%})-[%{$reset_color%}%(?,​%{$fg_bold[green]%}$PROMPT_CO%{$reset_color%},​%{$fg_bold[red]%}$PROMPT_CE%{$reset_color%})%{$fg_bold[grey]%}]-%{$reset_color%}%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%}){%{$reset_color%} ' +        ​RPROMPT=''​ 
-            RPROMPT=$'​%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%})}%{$reset_color%}%{$fg_bold[grey]%}-(%{$reset_color%}%{$fg_bold[$PROMPT_HOST_COLOR]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%})-%{$reset_color%}'​ +    } 
-        ​;; +    prompt_themes=($prompt_themes gentoo_server
-        dual) + 
-            PROMPT=$'​%{$fg_bold[grey]%}[%{$fg_bold[$PROMPT_HOST_COLOR]%}%m %{$fg_bold[grey]%}::​ %(!.%{$fg_bold[red]%}.%{$fg_bold[green]%})%n%{$fg_bold[grey]%}][%{$fg_bold[white]%}%~%{$fg_bold[grey]%}]\n[%(?,​%{$fg_bold[green]%}$PROMPT_CO%{$reset_color%},​%{$fg_bold[red]%}$PROMPT_CE%{$reset_color%})%{$fg_bold[grey]%}]%(!.%{$fg_bold[red]%}#​.%{$fg_bold[green]%}$)%{$reset_color%} ' +    prompt_compact_setup() { 
-        ​;; +        ​PROMPT=$'​%{$fg_bold[grey]%}-(%{$reset_color%}%{$fg_bold[white]%}%1~%{$reset_color%}%{$fg_bold[grey]%})-[%{$reset_color%}%(?,​%{$fg_bold[green]%}$PROMPT_CO%{$reset_color%},​%{$fg_bold[red]%}$PROMPT_CE%{$reset_color%})%{$fg_bold[grey]%}]-%{$reset_color%}%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%}){%{$reset_color%} ' 
-    ​esac+        RPROMPT=$'​%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%})}%{$reset_color%}%{$fg_bold[grey]%}-(%{$reset_color%}%{$fg_bold[$PROMPT_HOST_COLOR]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%})-%{$reset_color%}'​ 
 +    } 
 +    prompt_themes=($prompt_themes compact) 
 +     
 +    prompt_dual_setup() { 
 +        ​PROMPT=$'​%{$fg_bold[grey]%}[%{$fg_bold[$PROMPT_HOST_COLOR]%}%m %{$fg_bold[grey]%}::​ %(!.%{$fg_bold[red]%}.%{$fg_bold[green]%})%n%{$fg_bold[grey]%}][%{$fg_bold[white]%}%~%{$fg_bold[grey]%}]\n[%(?,​%{$fg_bold[green]%}$PROMPT_CO%{$reset_color%},​%{$fg_bold[red]%}$PROMPT_CE%{$reset_color%})%{$fg_bold[grey]%}]%(!.%{$fg_bold[red]%}#​.%{$fg_bold[green]%}$)%{$reset_color%} ' 
 +        ​RPROMPT=''​ 
 +    }    
 +    prompt_themes=($prompt_themes ​dual) 
 +     
 +    prompt_developer_setup() { 
 +        _developer_git() {  
 +            ​git status 2> /dev/null > /dev/null 
 +            if [ $? -eq 0 ]; then 
 +                BRANCH=${$(git symbolic-ref HEAD 2> /​dev/​null)#​refs/​heads/​} 
 +                if [[ -n $BRANCH ]]; then 
 +                    STATUS=$(git status --porcelain 2> /dev/null | tail -n1) 
 +                    if [[ -n $STATUS ]]; then 
 +                        git_color=$fg_bold[red] 
 +                    else 
 +                        git_color=$fg_bold[green] 
 +                    fi 
 +                    echo "​%{$fg_bold[grey]%} :: %{$fg_bold[white]%}${BRANCH}%{${git_color}#​%{$fg_bold[grey]%}"​ 
 +                fi 
 +            fi 
 +        } 
 +     
 +        ​PROMPT=$'​%{$fg_bold[grey]%}[%{$fg_bold[$PROMPT_HOST_COLOR]%}%m %{$fg_bold[grey]%}::​ %(!.%{$fg_bold[red]%}.%{$fg_bold[green]%})%n%{$fg_bold[grey]%}][%{$fg_bold[white]%}%~%{$fg_bold[grey]%}$(_developer_git)]\n[%(?,​%{$fg_bold[green]%}$PROMPT_CO%{$reset_color%},​%{$fg_bold[red]%}$PROMPT_CE%{$reset_color%})%{$fg_bold[grey]%}]%(!.%{$fg_bold[red]%}#​.%{$fg_bold[green]%}$)%{$reset_color%} ' 
 +        ​RPROMPT=''​ 
 +    ​}    
 +    prompt_themes=($prompt_themes developer) 
 +     
 +    ## enable theme 
 +    [[ -z $THEME ]] && THEME=compact 
 +    prompt $THEME
     unset THEME     unset THEME
 # }}} # }}}
Line 569: Line 707:
     # preferences     # preferences
     which nano &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​nano'​     which nano &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​nano'​
 +    which vi &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​vi'​
     which vim &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​vim'​     which vim &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​vim'​
     export PAGER='​less'​     export PAGER='​less'​
Line 581: Line 720:
  
     case $OSTYPE in solaris*)     case $OSTYPE in solaris*)
-        alias zfs_rsync='​rsync -avAPh+        alias zfs_rsync='​rsync -aviAPh
-        alias zfs_rsync+='​rsync -avAPh --delete'​+        alias zfs_rsync+='​rsync -aviAPh ​--delete'​
     ;; esac     ;; esac
  
     # include local aliases     # include local aliases
-    ​[[ -e ~/.aliasses ]] && mv ~/.aliasses ~/​.aliases +    [[ -e ~/.aliases ]] && source ~/​.aliases ​|| true
-    ​[[ -e ~/.aliases ]] && source ~/.aliases+
 # }}} # }}}
 </​code>​ </​code>​
  
configuration/zsh.txt · Last modified: 2017/05/01 18:32 by sjorge