• zsh 配置文件


    原文:http://forum.ubuntu.org.cn/viewtopic.php?f=95&t=138936

    ~/.zshrc:

      1 #color{{{
      2 autoload colors zsh/terminfo
      3 if [[ "$terminfo[colors]" -ge 8 ]]; then
      4 colors
      5 fi
      6 for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
      7 eval _$color='%{$terminfo[bold]$fg[${(L)color}]%}'
      8 eval $color='%{$fg[${(L)color}]%}'
      9 (( count = $count + 1 ))
     10 done
     11 FINISH="%{$terminfo[sgr0]%}"
     12 #}}}
     13 
     14 #命令提示符 {{{
     15 precmd () {
     16 local count_db_wth_char=${#${${(%):-%/}//[[:ascii:]]/}}
     17 local leftsize=${#${(%):-%M%/}}+$count_db_wth_char
     18 local rightsize=${#${(%):-%D %T }}
     19 HBAR=" -"
     20  
     21 FILLBAR="\${(l.(($COLUMNS - ($leftsize + $rightsize +2)))..${HBAR}.)}"
     22  
     23 RPROMPT=$(echo "%(?..$RED%?$FINISH)")
     24 PROMPT=$(echo "$BLUE%M$GREEN%/ $WHITE${(e)FILLBAR} $MAGENTA%D %T$FINISH
     25 $CYAN%n $_YELLOW>>>$FINISH ")
     26  
     27 #在 Emacs终端 中使用 Zsh 的一些设置
     28 if [[ "$TERM" == "dumb" ]]; then
     29 setopt No_zle
     30 PROMPT='%n@%M %/
     31 >>'
     32 alias ls='ls -F'
     33 fi    
     34 }
     35 #}}}
     36 
     37 #标题栏、任务栏样式{{{
     38 case $TERM in (*xterm*|*rxvt*|(dt|k|E)term)
     39    preexec () { print -Pn "\e]0;%n@%M//%/\ $1\a" }
     40    ;;
     41 esac
     42 #}}}
     43 
     44 #关于历史纪录的配置 {{{
     45 #历史纪录条目数量
     46 export HISTSIZE=10000
     47 #注销后保存的历史纪录条目数量
     48 export SAVEHIST=10000
     49 #历史纪录文件
     50 #export HISTFILE=~/.zhistory
     51 #以附加的方式写入历史纪录
     52 setopt INC_APPEND_HISTORY
     53 #如果连续输入的命令相同,历史纪录中只保留一个
     54 setopt HIST_IGNORE_DUPS      
     55 #为历史纪录中的命令添加时间戳      
     56 setopt EXTENDED_HISTORY      
     57  
     58 #启用 cd 命令的历史纪录,cd -[TAB]进入历史路径
     59 setopt AUTO_PUSHD
     60 #相同的历史路径只保留一个
     61 setopt PUSHD_IGNORE_DUPS
     62  
     63 #在命令前添加空格,不将此命令添加到纪录文件中
     64 #setopt HIST_IGNORE_SPACE      
     65 #}}}
     66 
     67 #每个目录使用独立的历史纪录{{{
     68 HISTDIR="$HOME/.zhistory"
     69     [[ ! -d "$HISTDIR" ]] && mkdir -p "$HISTDIR"
     70 HISTFILE="$HISTDIR/${PWD//\//:}"
     71 chpwd() {
     72 #   fc -W                                       # write current history  file
     73 #   "setopt INC_APPEND_HISTORY"
     74     HISTFILE="$HISTDIR/${PWD//\//:}"            # set new history file
     75     [[ ! -e "$HISTFILE" ]] && touch $HISTFILE
     76     local ohistsize=$HISTSIZE
     77         HISTSIZE=0                              # Discard previous dir's history
     78         HISTSIZE=$ohistsize                     # Prepare for new dir's history
     79     fc -R                                       # read from current histfile
     80 }
     81  
     82 function allhistory { cat $HISTDIR/* }                                   #*/
     83 function convhistory {
     84             sort $1 | sed 's/^:\([ 0-9]*\):[0-9]*;\(.*\)/\1::::::\2/' |
     85             awk -F"::::::" '{ $1=strftime("%Y-%m-%d %T",$1) "|"; print }'  
     86 }
     87 #使用 histall 命令查看全部历史纪录
     88 function histall { convhistory =(allhistory) |
     89             sed '/^.\{20\} *cd/i\\' }
     90 #使用 hist 查看当前目录历史纪录
     91 function hist { convhistory $HISTFILE }
     92  
     93 #全部历史纪录 top55
     94 function top55 { allhistory | awk -F':[ 0-9]*:[0-9]*;' '{ $1="" ; print }' | sed 's/ /\n/g' | sed '/^$/d' | sort | uniq -c | sort -nr | head -n 55 }
     95  
     96 #}}}
     97 
     98 #杂项 {{{
     99 #允许在交互模式中使用注释  例如:
    100 #cmd #这是注释
    101 setopt INTERACTIVE_COMMENTS      
    102  
    103 #启用自动 cd,输入目录名回车进入目录
    104 #稍微有点混乱,不如 cd 补全实用
    105 #setopt AUTO_CD
    106       
    107 #扩展路径
    108 #/v/c/p/p => /var/cache/pacman/pkg
    109 setopt complete_in_word
    110  
    111 #禁用 core dumps
    112 limit coredumpsize 0
    113  
    114 #Emacs风格 键绑定
    115 bindkey -e
    116 #设置 [DEL]键 为向后删除
    117 bindkey "\e[3~" delete-char
    118  
    119 #以下字符视为单词的一部分
    120 WORDCHARS='*?_-[]~=&;!#$%^(){}<>'
    121 #}}}
    122 
    123 #自动补全功能 {{{
    124 setopt AUTO_LIST
    125 setopt AUTO_MENU
    126 #开启此选项,补全时会直接选中菜单项
    127 #setopt MENU_COMPLETE
    128 
    129 autoload -U compinit
    130 compinit
    131  
    132 #自动补全缓存
    133 #zstyle ':completion::complete:*' use-cache on
    134 #zstyle ':completion::complete:*' cache-path .zcache
    135 #zstyle ':completion:*:cd:*' ignore-parents parent pwd
    136 
    137 #自动补全选项
    138 zstyle ':completion:*' verbose yes
    139 zstyle ':completion:*' menu select
    140 zstyle ':completion:*:*:default' force-list always
    141 zstyle ':completion:*' select-prompt '%SSelect:  lines: %L  matches: %M  [%p]'
    142  
    143 zstyle ':completion:*:match:*' original only
    144 zstyle ':completion::prefix-1:*' completer _complete
    145 zstyle ':completion:predict:*' completer _complete
    146 zstyle ':completion:incremental:*' completer _complete _correct
    147 zstyle ':completion:*' completer _complete _prefix _correct _prefix _match _approximate
    148  
    149 #路径补全
    150 zstyle ':completion:*' expand 'yes'
    151 zstyle ':completion:*' squeeze-slashes 'yes'
    152 zstyle ':completion::complete:*' '\\'
    153  
    154 #彩色补全菜单 
    155 eval $(dircolors -b) 
    156 export ZLSCOLORS="${LS_COLORS}"
    157 zmodload zsh/complist
    158 zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
    159 zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
    160  
    161 #修正大小写
    162 zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'
    163 #错误校正      
    164 zstyle ':completion:*' completer _complete _match _approximate
    165 zstyle ':completion:*:match:*' original only
    166 zstyle ':completion:*:approximate:*' max-errors 1 numeric
    167  
    168 #kill 命令补全      
    169 compdef pkill=killall
    170 zstyle ':completion:*:*:kill:*' menu yes select
    171 zstyle ':completion:*:*:*:*:processes' force-list always
    172 zstyle ':completion:*:processes' command 'ps -au$USER'
    173  
    174 #补全类型提示分组 
    175 zstyle ':completion:*:matches' group 'yes'
    176 zstyle ':completion:*' group-name ''
    177 zstyle ':completion:*:options' description 'yes'
    178 zstyle ':completion:*:options' auto-description '%d'
    179 zstyle ':completion:*:descriptions' format $'\e[01;33m -- %d --\e[0m'
    180 zstyle ':completion:*:messages' format $'\e[01;35m -- %d --\e[0m'
    181 zstyle ':completion:*:warnings' format $'\e[01;31m -- No Matches Found --\e[0m'
    182 zstyle ':completion:*:corrections' format $'\e[01;32m -- %d (errors: %e) --\e[0m'
    183  
    184 # cd ~ 补全顺序
    185 zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
    186 #}}}
    187 
    188 ##行编辑高亮模式 {{{
    189 # Ctrl+@ 设置标记,标记和光标点之间为 region
    190 zle_highlight=(region:bg=magenta #选中区域 
    191                special:bold      #特殊字符
    192                isearch:underline)#搜索时使用的关键字
    193 #}}}
    194 
    195 ##空行(光标在行首)补全 "cd " {{{
    196 user-complete(){
    197     case $BUFFER in
    198         "" )                       # 空行填入 "cd "
    199             BUFFER="cd "
    200             zle end-of-line
    201             zle expand-or-complete
    202             ;;
    203         "cd  " )                   # TAB + 空格 替换为 "cd ~"
    204             BUFFER="cd ~"
    205             zle end-of-line
    206             zle expand-or-complete
    207             ;;
    208         " " )
    209             BUFFER="!?"
    210             zle end-of-line
    211             ;;
    212         "cd --" )                  # "cd --" 替换为 "cd +"
    213             BUFFER="cd +"
    214             zle end-of-line
    215             zle expand-or-complete
    216             ;;
    217         "cd +-" )                  # "cd +-" 替换为 "cd -"
    218             BUFFER="cd -"
    219             zle end-of-line
    220             zle expand-or-complete
    221             ;;
    222         * )
    223             zle expand-or-complete
    224             ;;
    225     esac
    226 }
    227 zle -N user-complete
    228 bindkey "\t" user-complete
    229  
    230 #显示 path-directories ,避免候选项唯一时直接选中
    231 cdpath="/home"
    232 #}}}
    233 
    234 ##在命令前插入 sudo {{{
    235 #定义功能 
    236 sudo-command-line() {
    237     [[ -z $BUFFER ]] && zle up-history
    238     [[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"
    239     zle end-of-line                 #光标移动到行末
    240 }
    241 zle -N sudo-command-line
    242 #定义快捷键为: [Esc] [Esc]
    243 bindkey "\e\e" sudo-command-line
    244 #}}}
    245   
    246 #命令别名 {{{
    247 alias -g cp='cp -i'
    248 alias -g mv='mv -i'
    249 alias -g rm='rm -i'
    250 alias -g ls='ls -F --color=auto'
    251 alias -g ll='ls -l'
    252 alias -g grep='grep --color=auto'
    253 alias -g ee='emacsclient -t'
    254 alias -g history='history -fi'
    255  
    256 #[Esc][h] man 当前命令时,显示简短说明 
    257 alias run-help >&/dev/null && unalias run-help
    258 autoload run-help
    259  
    260 #历史命令 top10
    261 alias top10='print -l  ${(o)history%% *} | uniq -c | sort -nr | head -n 10'
    262 #}}}
    263 
    264 #路径别名 {{{
    265 #进入相应的路径时只要 cd ~xxx
    266 hash -d WWW="/home/lighttpd/html"
    267 hash -d ARCH="/mnt/arch"
    268 hash -d PKG="/var/cache/pacman/pkg"
    269 hash -d E="/etc/env.d"
    270 hash -d C="/etc/conf.d"
    271 hash -d I="/etc/rc.d"
    272 hash -d X="/etc/X11"
    273 hash -d BK="/home/r00t/config_bak"
    274 hash -d HIST="$HISTDIR"
    275 #}}}
    276     
    277 #{{{自定义补全
    278 #补全 ping
    279 zstyle ':completion:*:ping:*' hosts 192.168.128.1{38,} http://www.g.cn \
    280        192.168.{1,0}.1{{7..9},}
    281  
    282 #补全 ssh scp sftp 等
    283 my_accounts=(
    284 {r00t,root}@{192.168.1.1,192.168.0.1}
    285 kardinal@linuxtoy.org
    286 123@211.148.131.7
    287 )
    288 zstyle ':completion:*:my-accounts' users-hosts $my_accounts
    289  
    290 #def pacman-color completion as pacman
    291 compdef pacman-color=pacman
    292 #}}}
    293 
    294 #{{{ F1 计算器
    295 arith-eval-echo() {
    296   LBUFFER="${LBUFFER}echo \$(( "
    297   RBUFFER=" ))$RBUFFER"
    298 }
    299 zle -N arith-eval-echo
    300 bindkey "^[[11~" arith-eval-echo
    301 #}}}
    302 
    303 ####{{{
    304 function timeconv { date -d @$1 +"%Y-%m-%d %T" }
    305  
    306 # }}}
    307 
    308  
    309 ## END OF FILE #################################################################
    310 # vim:filetype=zsh foldmethod=marker autoindent expandtab shiftwidth=4

  • 相关阅读:
    C语言头文件stdarg.h(cstdarg)
    C语言头文件ctype.h(cctype)
    内存数库库种类
    C#设计模式单件模式(Singleton Pattern)
    vs2005快捷键,vs2008通用
    移动MYSQL数据库经常遇到乱码的问题
    ie6 ie7 ie8 共存以及Firefox浏览器CSS兼容写法
    用正则表达式替换a标记href值
    IE6 PNG透明终极解决方案(打造W3CfunsIE6PNG最强帖)
    IE的hack
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2837005.html
Copyright © 2020-2023  润新知