理由1:zsh 支持命令选项补全git
zsh 除了支持目录的补全,还支持命令选项的补全,例如 ls -<TAB><TAB> 会直接列出全部 ls 的参数,不再会出现一个命令打到一半,忘记参数致使重开一个 terminal man 一把。程序员
nine reasons to use zshweb
理由2:zsh 支持命令参数补全tomcat
之前想 kill 掉一个进程,个人作法是 ps aux | grep "进程名" 而后记下 id,再 kill id。在 zsh 下,只须要 kill 进程名<TAB>,zsh 就会自动补全进程的 pid。bash
nine reasons to use zshapp
其他我经常使用的补全还有:less
·ssh <TAB><TAB> 时 zsh 会自动列出你访问过的主机和用户名来补全 ssh 的参数。ssh
·brew install <TAB><TAB> 来补全软件包名,除了 homebrew 之外,一样支持 port/apt-get 等其余包管理器。curl
理由3:zsh 支持更加聪明的目录补全webapp
之前好比想进入一个比较深的目录,好比 /Users/pw/workspace/project/src/main/webapps/static/js,就得在 bash 下面打半天,不停的 tab 去补全一个正确的路径出来。在 zsh 下,只须要输入每一个路径的头字母而后 tab 一下: cd /u/p/w/p/s/m/w/s/j<TAB>
理由4:zsh 强大的快速目录切换
之前最苦逼的事情莫过于频繁在两个工做目录下切换,总要打一长串 cd 路径。也尝试过 popd 和 pushd 来解决这个问题,但每每是目录已经切换了才想起来没用 pushd。而 zsh 会记住你每一次切换的路径,而后经过 1 来切换到你上一次访问的路径,2 切换到上上次……一直到 9,还能够经过 d 查看目录访问历史。
zsh 还能够配合 autojump 一块儿使用,autojump 会记录下每个你访问过的目录,而后经过 j 来快速跳转。
理由5:zsh 支持全局 alias 和后缀名 alias
bash 的 alias 只能作命令的缩写,而 zsh 更进一步,使 alias 能够缩写命令的一部分,例如参数或环境变量设置。
$ alias -s log=less
$ ~/package/tomcat/log/catalina.log
# 至关于 less ~/package/tomcat/log/catalina.log
$ alias -g PR=http_proxy=127.0.0.1:$ PR curl https://twitter.com
# 至关于 http_proxy=127.0.0.1:8087 curl https://twitter.com
理由6:zsh 有着丰富多彩的命令行提示符
bash 下经过设置 $PS1 已经能够实现很丰富的提示符了,而 zsh 更进一步,能够实现诸如多行提示符、提示符右对齐等功能。oh-my-zsh 配置文件中提供了很是丰富的提示符 theme 供选择,我使用的是 gentoo 主题,比较简洁,还能够显示当前 git 仓库的状态。
理由7:zsh 有更多优雅的语法
例如修改 PATH,bash 下设置 $PATH 要求全部路径都要写在一行里,目录多了之后看起来就很难看。zsh 支持更加符合程序员审美观的设置方式。
path=(
~/bin
$path
~/package/smartsprites/bin
)