Z shell

Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash,ksh, and tcsh were incorporated into zsh; many original features were added.

Zsh Completion

Z shell_第1张图片


Z shell_第2张图片


Share My .zshrc (Refer to Kardinal)  here and  welcome share your experience.   


RPROMPT = ' %{%}(%/)'
autoload colors
colors

PROMPT = '%{%}% 
>>'

export  EDITOR =emacs


#关于历史纪录的配置
# number of lines kept in history
export  HISTSIZE =10000
# # number of lines saved in the history after logout
export  SAVEHIST =10000
# # location of history
export  HISTFILE =~/.zhistory
# # append command to history file once executed
setopt INC_APPEND_HISTORY

#Disable core dumps
limit coredumpsize 0

#Emacs风格键绑定
bindkey -e
#设置DEL键为向后删除
bindkey   "\e[3~"  delete-char

#以下字符视为单词的一部分
WORDCHARS = '*?_-[]~=&;!#$%^(){}<>'

#自动补全功能
setopt AUTO_LIST
setopt AUTO_MENU
setopt MENU_COMPLETE

autoload -U compinit
compinit

# Completion caching
zstyle   ':completion::complete:*'  use-cache on
zstyle   ':completion::complete:*'  cache-path .zcache
#zstyle ':completion:*:cd:*' ignore-parents parent pwd

#Completion Options
zstyle   ':completion:*:match:*'  original only
zstyle   ':completion::prefix-1:*'  completer _complete
zstyle   ':completion:predict:*'  completer _complete
zstyle   ':completion:incremental:*'  completer _complete _correct
zstyle   ':completion:*'  completer _complete _prefix _correct _prefix _match _approximate

# Path Expansion
zstyle   ':completion:*'  expand   'yes'
zstyle   ':completion:*'  squeeze-shlashes   'yes'
zstyle   ':completion::complete:*'   '\\'

zstyle   ':completion:*:*:*:default'  menu yes   select
zstyle   ':completion:*:*:default'  force-list always

# GNU Colors 需要/etc/DIR_COLORS文件 否则自动补全时候选菜单中的选项不能彩色显示
[  -f /etc/DIR_COLORS   ]   &&   eval   $(dircolors -b /etc/DIR_COLORS)
export  ZLSCOLORS = "${LS_COLORS}"
zmodload zsh/complist
zstyle   ':completion:*'  list-colors   ${ (s.:.)LS_COLORS }
zstyle   ':completion:*:*:kill:*:processes'  list-colors   '=(#b) #([0-9]#)*=0=01;31'

zstyle   ':completion:*'  completer _complete _match _approximate
zstyle   ':completion:*:match:*'  original only
zstyle   ':completion:*:approximate:*'  max-errors 1 numeric

compdef   pkill = kill
compdef   pkill =killall
zstyle   ':completion:*:*:kill:*'  menu yes   select
zstyle   ':completion:*:processes'   command   'ps -au$USER'

# Group matches and Describe
zstyle   ':completion:*:matches'  group   'yes'
zstyle   ':completion:*:options'  description   'yes'
zstyle   ':completion:*:options'  auto-description   '%d'
zstyle   ':completion:*:descriptions'  format   $'\e[01;33m -- %d --\e[0m'
zstyle   ':completion:*:messages'  format   $'\e[01;35m -- %d --\e[0m'
zstyle   ':completion:*:warnings'  format   $'\e[01;31m -- No Matches Found --\e[0m'

#命令别名
alias  cp = 'cp -i'
alias  mv = 'mv -i'
alias  rm = 'rm -i'
alias  ls = 'ls -F --color=auto'
alias  ll = 'ls -l'
alias  grep = 'grep --color=auto'
alias  ee = 'emacsclient -t'

#路径别名 进入相应的路径时只要 cd ~xxx
hash  -d   WWW = "/home/lighttpd/html"
hash  -d   ARCH = "/mnt/arch"
hash  -d   PKG = "/var/cache/pacman/pkg"
hash  -d   E = "/etc/env.d"
hash  -d   C = "/etc/conf.d"
hash  -d   I = "/etc/rc.d"
hash  -d   X = "/etc/X11"
hash  -d   BK = "/home/r00t/config_bak"

##for Emacs在Emacs终端中使用Zsh的一些设置 不推荐在Emacs中使用它
if   [[   "$TERM"   ==   "dumb"   ]];   then
setopt No_zle
PROMPT = '%n@%M %/
>>'
alias  ls = 'ls -F'
fi  




#效果超炫的提示符,如需要禁用,注释下面配置   
function precmd   {
     
      local TERMWIDTH
    ((   TERMWIDTH   =   ${ COLUMNS }  - 1 ))

     
      ###
      # Truncate the path if it's too long.
     
      PR_FILLBAR = ""
      PR_PWDLEN = ""
     
      local  promptsize = ${#${ (%) :- --(%n@%m:%l)---()-- }}
      local  pwdsize = ${#${ (%) :- %~ }}
     
      if   [[   "$promptsize + $pwdsize"  -gt   $TERMWIDTH   ]];   then
    (( PR_PWDLEN = $TERMWIDTH  -   $promptsize))
      else
      PR_FILLBAR = "\${(l.(($TERMWIDTH - ($promptsize + $pwdsize)))..${PR_HBAR}.)}"
      fi
     
     
      ###
      # Get APM info.
     
      #if which ibam > /dev/null; then
      #PR_APM_RESULT=`ibam --percentbattery`
      #elif which apm > /dev/null; then
      #PR_APM_RESULT=`apm`
      #fi
}


setopt extended_glob
preexec ()   {
      if   [[   "$TERM"   ==   "screen"   ]];   then
      local  CMD = ${ 1 [(wr)^(*=*|sudo|-*)] }
      echo  -n   "\ek$CMD\e\\"
      fi
}

setprompt ()   {
      ###
      # Need this so the prompt will work.

    setopt prompt_subst
     

      ###
      # See if we can use colors.

    autoload colors zsh/terminfo
      if   [[   "$terminfo[colors]"  -ge 8   ]];   then
    colors
      fi
    for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE;   do
      eval PR_ $color = '%{$terminfo[bold]$fg[${(L)color}]%}'
      eval PR_LIGHT_ $color = '%{$fg[${(L)color}]%}'
    ((   count   =   $count  + 1 ))
      done
      PR_NO_COLOUR = "%{$terminfo[sgr0]%}"
     
     
      ###
      # See if we can use extended characters to look nicer.
     
      typeset  -A altchar
      set  -A altchar   ${ (s..)terminfo[acsc] }
      PR_SET_CHARSET = "%{$terminfo[enacs]%}"
      PR_SHIFT_IN = "%{$terminfo[smacs]%}"
      PR_SHIFT_OUT = "%{$terminfo[rmacs]%}"
      PR_HBAR = ${ altchar [q] :- - }
      #PR_HBAR=" "
      PR_ULCORNER = ${ altchar [l] :- - }
      PR_LLCORNER = ${ altchar [m] :- - }
      PR_LRCORNER = ${ altchar [j] :- - }
      PR_URCORNER = ${ altchar [k] :- - }
     
     
      ###
      # Decide if we need to set titlebar text.
     
      case   $TERM  in
    xterm*)
          PR_TITLEBAR = $'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
        ;;
    screen)
          PR_TITLEBAR = $'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
        ;;
    *)
          PR_TITLEBAR = ''
        ;;
      esac

      ###
      # Decide whether to set a screen title
      if   [[   "$TERM"   ==   "screen"   ]];   then
      PR_STITLE = $'%{\ekzsh\e\\%}'
      else
      PR_STITLE = ''
      fi

      ###
      # APM detection
     
      #if which ibam > /dev/null; then
      #PR_APM='$PR_RED${${PR_APM_RESULT[(f)1]}[(w)-2]}%%(${${PR_APM_RESULT[(f)3]}[(w)-1]})$PR_LIGHT_BLUE:'
      #elif which apm > /dev/null; then
      #PR_APM='$PR_RED${PR_APM_RESULT[(w)5,(w)6]/\% /%%}$PR_LIGHT_BLUE:'
      #else
      PR_APM = ''
      #fi
      ###
      # Finally, the prompt.
}
setprompt


原文链接: http://blog.csdn.net/crazyjixiang/article/details/6730893

你可能感兴趣的:(Z shell)