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 13:05]
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 ​20141225008+# 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: --- - switch to selective nocorrect/​noglob
 +# - 20141225: new - enable dirstack, enable auto rehash, extra MacOSX helpers
 # - 20141225: --- - set NOFANCY_PROMPT to disable UTF-8 prompt # - 20141225: --- - set NOFANCY_PROMPT to disable UTF-8 prompt
 # - 20141225: fix - broken dual and gentoo-server themes # - 20141225: fix - broken dual and gentoo-server themes
 # - 20141225: --- - reworked flow # - 20141225: --- - reworked flow
 +# - 20141225: new - NZSHRC override via .zopts
 # - 20141225: new - local option override (.zopts) # - 20141225: new - local option override (.zopts)
-#                   * also allows for alternate NZSHRC to be set 
 # - 20141225: fix - updated automatic update function # - 20141225: fix - updated automatic update function
-# - 20141223: fix - disable autocomplete of arguments 
 # - 20141223: new - disabled beep # - 20141223: new - disabled beep
 # - 20141223: fix - disabled homedir autocomplete # - 20141223: fix - disabled homedir autocomplete
Line 76: 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
Line 95: Line 106:
  
     ## superglobs     ## superglobs
-    #setopt extended_glob 
     unsetopt case_glob     unsetopt case_glob
     ​     ​
Line 112: Line 122:
     setopt no_beep     setopt no_beep
     ​     ​
-    # include local options+    ​## automatic rehash 
 +    setopt nohashdirs 
 +     
 +    ## make some commands safer 
 +    CMD_SAFE_WRAP=0 
 +    setopt mark_dirs 
 + 
 +    ## include local options
     [[ -e ~/.zopts ]] && source ~/.zopts     [[ -e ~/.zopts ]] && source ~/.zopts
-# }}} 
- 
-# {{{ prompt 
-    # enable colors module 
-    autoload -U colors && colors 
- 
-    # utf8 checkmarks 
-    PROMPT_CO='​.'​ 
-    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 
-    case $THEME in 
-        gentoo) 
-            PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' 
-        ;; 
-        gentoo_server) 
-            PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' 
-        ;; 
-        minimal) 
-            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=$'​%(!.%{$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%}'​ 
-        ;; 
-        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%} ' 
-        ;; 
-    esac 
-    unset THEME 
 # }}} # }}}
  
Line 166: Line 148:
     # ignore entries starting with a space     # ignore entries starting with a space
     setopt hist_ignore_space     setopt hist_ignore_space
 +# }}}
 +
 +# {{{ dirstack
 +    DIRSTACKSIZE=20
 +    setopt autopushd pushdsilent pushdtohome pushdminus
 +    setopt pushdignoredups # ignore dups
 # }}} # }}}
  
Line 197: Line 185:
     bindkey "​\e[H"​ beginning-of-line     bindkey "​\e[H"​ beginning-of-line
     bindkey "​\e[F"​ end-of-line     bindkey "​\e[F"​ end-of-line
-# }}} 
- 
-# {{{ auto completion 
-    ## base 
-    autoload -U compinit && compinit 
- 
-    ## complete from withing word 
-    setopt complete_in_word 
- 
-    ## complete aliases 
-    setopt complete_aliases 
- 
-    ## pretty menu's 
-    zstyle ':​completion:​*'​ menu select=1 
-    zstyle ':​completion:​*'​ list-colors ${(s.:​.)LS_COLORS} 
-    setopt auto_menu ​   # show menu on 2nd <tab> 
-    setopt list_rows_first ​ # use row list if possible 
- 
-    ## Ignore completions for commands that we dont have 
-    zstyle ':​completion:​*:​functions'​ ignored-patterns '​_*'​ 
- 
-    ## enable case-insensitive completion 
-    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'​ menu yes select 
-    zstyle ':​completion:​*:​processes-names'​ force-list always ​   ​ 
- 
-    ## enable kill menu 
-    zstyle ':​completion:​*:​kill:​*'​ command 'ps -u $(whoami) -o pid,​pcpu,​pmem,​cmd'​ 
-    zstyle ':​completion:​*:​*:​kill:​*:​processes'​ list-colors '=(#b) #​([0-9]#​)*=0=01;​32'​ 
-    zstyle ':​completion:​*:​*:​kill:​*'​ menu yes select 
-    zstyle ':​completion:​*:​kill:​*'​ force-list always 
-    zstyle ':​completion:​*:​kill:​*'​ insert-ids single 
- 
-    ## enable make completion 
-    compile=(all clean compile disclean install remove uninstall) 
-    compctl -k compile make 
- 
-    ## ssh host completion 
-    if [ ! -f ~/​.ssh/​config ]; then 
-        [ -f ~/​.ssh/​known_hosts ] && rm ~/​.ssh/​known_hosts 
-        mkdir -p ~/.ssh 
-        echo "​HashKnownHosts no" >>! ~/​.ssh/​config 
-        chmod 0600 ~/​.ssh/​config 
-    fi 
-    zstyle -e ':​completion::​*:​ssh:​*:​hosts'​ hosts '​reply=(${=${${(f)"​$(cat {/​etc/​ssh_,​~/​.ssh/​known_}hosts(|2)(N) /​dev/​null)"​}%%[#​ ]*}//,/ })' 
-    zstyle ':​completion:​*:​ssh:​*'​ group-order hosts-domain hosts-host users hosts-ipaddr 
- 
-    ## ssh user completion cleanup 
-    zstyle ':​completion:​*:​ssh:​*:​users'​ ignored-patterns \ 
-        adm alias apache at bin cron cyrus daemon distcache exim ftp games gdm \ 
-        guest gopher haldaemon halt mail man messagebus mysql named news nobody nut \ 
-        nfsnobody lp operator portage postfix postgres postmaster qmaild qmaill qmailp \ 
-        qmailq qmailr qmails rpmbuild rpc rpcuser shutdown smmsp squid sshd sync saslauth \ 
-        uucp vcsa vpopmail xfs  
 # }}} # }}}
  
Line 314: 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
     }     }
 # }}} # }}}
  
-# {{{ variables +# {{{ advanced 
-    # preferences +    ## cleanup aliases 
-    ​which nano &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​nano'​ +    ​noglob unalias ​-m cd cp ls mv rm 
-    which vim &> /dev/null ; [ $? -eq 0 ] && export EDITOR='​vim'​ +
-    export PAGER='​less'​ +
-# }}}+
  
-# {{{ aliases 
-    # nano wrapping 
-    which nano &> /dev/null ; [ $? -eq 0 ] && alias nano='​nano -w' 
- 
-    # default for ls 
-    alias ll='ls -l' 
-    alias lr='ls -R' 
- 
-    case $OSTYPE in solaris*) 
-        alias zfs_rsync='​rsync -avAPh'​ 
-        alias zfs_rsync+='​rsync -avAPh --delete'​ 
-    ;; esac 
- 
-    # include local aliases 
-    [[ -e ~/.aliasses ]] && mv ~/.aliasses ~/.aliases 
-    [[ -e ~/.aliases ]] && source ~/.aliases 
-# }}} 
- 
-# {{{ advanced 
     ## fix url quote'​s     ## fix url quote'​s
     if [[ ${ZSH_VERSION//​\./​} -ge 420 ]] ; then     if [[ ${ZSH_VERSION//​\./​} -ge 420 ]] ; then
Line 357: 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)
  
 +        alias ls="ls --group-directories-first"​
         if [ -n "​${LS_COLORS}"​ ]; then         if [ -n "​${LS_COLORS}"​ ]; then
             export ZLSCOLORS="​${LS_COLORS}"​             export ZLSCOLORS="​${LS_COLORS}"​
-            alias ls='ls --color=auto' +            alias ls="​${aliases[ls]:​-ls} ​--color=auto" 
-            alias grep='grep --color=auto'+            alias grep="​${aliases[grep]:​-grep--color=auto"
         fi         fi
   ​   ​
         # 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 380: 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 460: 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 471: Line 423:
             alias pkgin='​sudo pkgin'             alias pkgin='​sudo pkgin'
         fi         fi
 +        ​
 +        ## helpers ​       ​
 +        function vnc() {
 +            which vncviewer &> /dev/null
 +            if [ $? -eq 0 ]; then
 +                vncviewer $@
 +            else
 +                open vnc://$@
 +            fi
 +        }
     ;; 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 503: Line 444:
             PROMPT_HOST_COLOR=green             PROMPT_HOST_COLOR=green
         ;;         ;;
-        (artemis*|monolith*)+        (exosphere*|crust*)
             PROMPT_HOST_COLOR=red             PROMPT_HOST_COLOR=red
         ;;         ;;
Line 512: Line 453:
     esac     esac
   ​   ​
-  ​## local configuration +    ​## local configuration 
-  [[ -e ~/.zlocal ]] && source ~/.zlocal+    [[ -e ~/.zlocal ]] && source ~/.zlocal 
 +# }}} 
 + 
 +# {{{ auto completion 
 +    ## base 
 +    autoload -U compinit && compinit 
 + 
 +    ## complete from withing word 
 +    setopt complete_in_word 
 +    setopt always_to_end 
 + 
 +    ## 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 
 +    zstyle ':​completion:​*'​ menu select=1 
 +    zstyle ':​completion:​*'​ list-colors ${(s.:​.)LS_COLORS} 
 +    setopt auto_menu ​   # show menu on 2nd <​tab>​ 
 +    setopt list_rows_first ​ # use row list if possible 
 + 
 +    ## prevent re-suggestion 
 +    zstyle ':​completion:​*:​(scp|rm|kill|diff):​*'​ ignore-line yes 
 +    #zstyle ':​completion:​*:​rm:​*'​ file-patterns '​*:​all-files'​ 
 + 
 +    ## enable killall menu (linux) 
 +    zstyle ':​completion:​*:​processes-names'​ command 'ps -u $(whoami) -o comm='​ 
 +    zstyle ':​completion:​*:​processes-names'​ menu yes select 
 +    zstyle ':​completion:​*:​processes-names'​ force-list always ​    
 + 
 +    ## enable kill menu (linux) ​   
 +    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:​*'​ menu yes select 
 +    zstyle ':​completion:​*:​*:​kill:​*'​ force-list always 
 +    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 
 +    compile=(all clean compile disclean install remove uninstall) 
 +    compctl -k compile make 
 +     
 +    ## 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 
 +        [ -f ~/​.ssh/​known_hosts ] && rm ~/​.ssh/​known_hosts 
 +        mkdir -p ~/.ssh 
 +        echo "​HashKnownHosts no" >>! ~/​.ssh/​config 
 +        chmod 0600 ~/​.ssh/​config 
 +    fi 
 +    zstyle -e ':​completion:​*:​hosts'​ hosts '​reply=( 
 +        ${=${=${=${${(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/​scp/​rsync 
 +    zstyle ':​completion:​*:​(scp|rsync):​*'​ tag-order '​hosts:​-host:​host hosts:​-domain:​domain hosts:​-ipaddr:​ip\ address *' 
 +    zstyle ':​completion:​*:​(scp|rsync):​*'​ group-order users files all-files hosts-domain hosts-host hosts-ipaddr 
 +    zstyle ':​completion:​*:​ssh:​*'​ tag-order '​hosts:​-host:​host hosts:​-domain:​domain hosts:​-ipaddr:​ip\ address *' 
 +    zstyle ':​completion:​*:​ssh:​*'​ group-order users hosts-domain hosts-host users hosts-ipaddr 
 +    zstyle ':​completion:​*:​(ssh|scp|rsync):​*:​hosts-host'​ ignored-patterns '​*(.|:​)*'​ loopback ip6-loopback localhost ip6-localhost ip6-allnodes ip6-allrouters ip6-localnet ip6-mcastprefix broadcasthost 
 +    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::​*'​ 
 +# }}} 
 + 
 +# {{{ auto correction 
 +    ## disable auto correct 
 +    alias cd='​nocorrect cd' 
 +    alias cp='​nocorrect cp' 
 +    alias gcc='​nocorrect gcc' 
 +    alias grep='​nocorrect grep'​ 
 +    alias ln='​nocorrect ln' 
 +    alias man='​nocorrect man' 
 +    alias mkdir='​nocorrect mkdir'​ 
 +    alias mv='​nocorrect mv' 
 +    alias rm="​nocorrect ${aliases[rm]:​-rm}"​ 
 +    which sshpass &> /dev/null ; [ $? -eq 0 ] && alias sshpass='​nocorrect sshpass'​ 
 +     
 +    ## disable globbing. 
 +    alias find='​noglob find'​ 
 +    alias ftp='​noglob ftp' 
 +    alias history='​noglob history'​ 
 +    alias locate='​noglob locate'​ 
 +    alias rsync='​noglob rsync'​ 
 +    alias scp='​noglob scp' 
 +    alias sftp='​noglob sftp'​ 
 +    alias ssh='​noglob ssh' 
 +# }}} 
 + 
 +# {{{ safe command wrap 
 +    if [ ${CMD_SAFE_WRAP} -gt 0 ]; then 
 +        alias rm="​${aliases[rm]:​-rm} -i" 
 +        alias mv="​${aliases[mv]:​-mv} -i" 
 +        alias cp="​${aliases[cp]:​-cp} -i" 
 +        alias ln="​${aliases[ln]:​-ln} -i" 
 +        alias mkdir="​${aliases[mkdir]:​-mkdir} -p" 
 +    fi 
 +# }}} 
 + 
 +# {{{ prompt 
 +    ## enable colors and prompt module 
 +    autoload -U colors && colors 
 +    autoload -Uz promptinit && promptinit 
 + 
 +    ## checkmarks 
 +    PROMPT_CO='​.'​ 
 +    PROMPT_CE='​!'​ 
 + 
 +    ## create themes 
 +    prompt_gentoo_setup() { 
 +        PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' 
 +        RPROMPT=''​ 
 +    } 
 +    prompt_themes=($prompt_themes gentoo) 
 +     
 +    prompt_gentoo_server_setup() { 
 +        PROMPT='​%(!.%{$fg_bold[red]%}.%{$fg_bold[yellow]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) %#​%{$reset_color%} ' 
 +        RPROMPT=''​ 
 +    } 
 +    prompt_themes=($prompt_themes gentoo_server) 
 + 
 +    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%} ' 
 +        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 
 +# }}} 
 + 
 +# {{{ variables 
 +    # preferences 
 +    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'​ 
 +    export PAGER='​less'​ 
 +# }}} 
 + 
 +# {{{ aliases 
 +    # nano wrapping 
 +    which nano &> /dev/null ; [ $? -eq 0 ] && alias nano='​nano -w' 
 + 
 +    # default for ls 
 +    alias ll="​${aliases[ls]:​-ls} -l" 
 + 
 +    case $OSTYPE in solaris*) 
 +        alias zfs_rsync='​rsync -aviAPh'​ 
 +        alias zfs_rsync+='​rsync -aviAPh --delete'​ 
 +    ;; esac 
 + 
 +    # include local aliases 
 +    [[ -e ~/.aliases ]] && source ~/.aliases || true
 # }}} # }}}
 </​code>​ </​code>​
  
configuration/zsh.txt · Last modified: 2017/05/01 18:32 by sjorge