额,zsh功能还是挺强大的,各种细节处理的很好,很方便。
详细介绍就略过吧,可以参考这篇文章:使用ZSH的九个理由
下面记录一下我在配置ZSH的过程中的要点:
1、基本上你能找到的配置教程都是基于oh-my-zsh的。
因为zsh配置过于复杂,所以有了oh-my-zsh这个项目,目的在于简化zsh配置。项目地址:https://github.com/robbyrussell/oh-my-zsh
在项目readme文档中详细介绍了使用方法,这里略过。
2、使用oh-my-zsh的前提是你已经安装好了zsh。
oh-my-zsh其实就是一堆zsh脚本的集合,zsh原程序还是需要独立安装的。各个平台的方法不同,不再赘述。
3、readme文档中提供的手动安装方法如下
1 2 3 4 5 6 7 8 9 10 11 |
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh # 把该项目的代码clone下来 cp ~/.zshrc ~/.zshrc.orig # 备份原zsh配置文件 cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc # 复制oh-my-zsh提供的zshrc模版文件 chsh -s /bin/zsh # 改变当前用户的默认shell |
4、基本配置(以我的.zshrc为例)
1 2 3 |
# Path to your oh-my-zsh installation. # 这里填写你oh-my-zsh目录的路径,我是使用apt安装的,因此在/usr/share下面 export ZSH=/usr/share/oh-my-zsh |
1 2 3 4 5 6 7 8 |
# Set name of the theme to load. # Look in ~/.oh-my-zsh/themes/ # Optionally, if you set this to "random", it'll load a random theme each # time that oh-my-zsh is loaded. # 其实原文注释就很详细了,这里就是主题的名称。 # 所谓主题其实就是在themes目录里的一个zsh脚本文件,用来配置提示符之类的shell命令 ZSH_THEME="clean" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Uncomment the following line to use case-sensitive completion. # 自动匹配时候是否区分大小写,我选择了no # CASE_SENSITIVE="true" # Uncomment the following line to disable bi-weekly auto-update checks. # 这里我关闭了自动更新 DISABLE_AUTO_UPDATE="true" # Uncomment the following line to enable command auto-correction. # 大部分人用zsh都开启了这个自动修正命令的功能,我刚从bash转过来,还是不习惯。 # 更习惯用command_not_found这个软件提供的错误提示,而不是强制修改我的命令。 #ENABLE_CORRECTION="true" # Uncomment the following line to display red dots whilst waiting for completion. # 这里其实就是在等待自动完成的时候显示红色的点,看起来更直观 COMPLETION_WAITING_DOTS="true" # The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" # 这里选择命令历史的时间格式,这个确实很方便,每个命令都记录下运行时刻了。 HIST_STAMPS="yyyy-mm-dd" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. # 这里选择你要加载的插件,上面讲的很清楚,不要加载太多! # 我更习惯将插件里面的代码直接粘贴到这个.zshrc文件里,个人喜欢统一管理。 plugins=(git sudo debian colored-man) # 下面这句是关键,加载oh-my-zsh的主要代码,默认即可 source $ZSH/oh-my-zsh.sh # User configuration # 下面开始是用户自己的配置项了 export PATH=$HOME/bin:/usr/local/bin:$PATH |
5、下面是其他一些有用的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# 运行未未安装程序时,提示安装软件。 # 是自带的一个插件,最主要的代码就是下面这一行,我就直接在这里粘贴了 # 但是command_not_found这是一个软件,需要另外安装的。 source /etc/zsh_command_not_found # 禁用zsh自己匹配*这样的符号,不然就无法传递给目标程序了。 setopt no_nomatch # 下面的提示符设置改编自主题“clean”。所以注释掉了加载主题的那行代码。 # # root的用户名显示为红色,其他用户名显示为白色 if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="white"; fi # 行首提示符 PROMPT='%{$fg[$NCOLOR]%}%n@%m:%{$fg[blue]%}%B%c/%{$reset_color%} $(git_prompt_info)%(!.#.$) ' RPROMPT='[%*]' # 当程序返回值不为0时,在行尾红色显示 local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" RPS1=${return_code} # 这里是ls针对文件类型颜色配置,我不喜欢zsh默认的颜色配置,这个是bash默认的颜色 declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:" # git theming,关于git目录的提示符号配置 ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}(%{$fg_no_bold[yellow]%}%B" ZSH_THEME_GIT_PROMPT_SUFFIX="%b%{$fg_bold[blue]%})%{$reset_color%} " ZSH_THEME_GIT_PROMPT_CLEAN="" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg_bold[red]%}✗" |
6、zsh中grep搜索结果中的关键字没有红色高亮
在文件 oh-my-zsh/lib/grep.zsh中,有export GREP_COLOR='1;32'
若要恢复grep默认红色的设置,要么删除那行代码,要么在.zshrc中 export GREP_COLOR='' 重新赋为空值
补充一下查看主题$ ls ~/.oh-my-zsh/themes 查看插件$ ls ~/.oh-my-zsh/plugins
其它的我只想说一句屌!!!!!!!不愧是伟哥,就是牛!
强大的zsh…