理由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
)