使用 zsh 的九個理由

像大部分 *nix 用戶,我以前用 bash 不少年,期間也有太小的不爽,但一直都忍過來,或者是說沒想過這些不爽的地方能解決,好比 cd到一個深目錄時得哐哐猛敲 <TAB>。這麼多年裏我也嘗試過其餘 shell。好比 ksh/tcsh 以及今天要說的 zsh,但最終都沒堅持下去,由於心中始終仍是認爲 bash 是最正統的 shell。直到前幾天發現 oh-my-zsh,下來試用了一把,頓時以爲 bash 各類操做不爽到沒法忍受。git

理由 0:zsh 兼容 bash

兼容 bash 意味着我不須要太多學習成本就能夠切換過來,意味着我之前在 bash 下積累的 shell 語法、基本操做都不會荒廢。在我內心 bash 仍是最通用和標準的 shell 環境,所以兼容 bash 讓我切換到 zsh 時沒有太多後顧之憂。程序員

理由 1:zsh 的補全模式更方便

zsh 中按兩下 tab 鍵能夠觸發 zsh 的補全,全部待補全項均可以經過鍵盤方向鍵或者 <Ctrl-n/p/f/b> 來選擇。github

 

理由 2:zsh 支持命令選項補全

zsh 除了支持目錄的補全,還支持命令選項的補全,例如 ls -<TAB><TAB> 會直接列出全部 ls 的參數,不再會出現一個命令打到一半,忘記參數致使重開一個 terminal man 一把。web

 

理由 3:zsh 支持命令參數補全

之前想 kill 掉一個進程,個人作法是 ps aux | grep "進程名" 而後記下 id,再 kill id。在 zsh 下,只須要 kill 進程名<TAB>zsh 就會自動補全進程的 pid。shell

 

其他我經常使用的補全還有:tomcat

  • ssh <TAB><TAB> 時 zsh 會自動列出你訪問過的主機和用戶名來補全 ssh 的參數。
  • brew install <TAB><TAB> 來補全軟件包名,除了 homebrew 之外,一樣支持 port/apt-get 等其餘包管理器。

理由 4:zsh 支持更加聰明的目錄補全

之前好比想進入一個比較深的目錄,好比 /Users/pw/workspace/project/src/main/webapps/static/js,就得在 bash 下面打半天,不停的 tab 去補全一個正確的路徑出來。在 zsh 下,只須要輸入每一個路徑的頭字母而後 tab 一下: cd /u/p/w/p/s/m/w/s/j<TAB>bash

理由 5:zsh 強大的快速目錄切換

之前最苦逼的事情莫過於頻繁在兩個工做目錄下切換,總要打一長串 cd 路徑。也嘗試過 popd 和 pushd 來解決這個問題,但每每是目錄已經切換了纔想起來沒用 pushd。而 zsh 會記住你每一次切換的路徑,而後經過 1 來切換到你上一次訪問的路徑,2 切換到上上次……一直到 9,還能夠經過 d 查看目錄訪問歷史。app

zsh 還能夠配合 autojump 一塊兒使用,autojump 會記錄下每個你訪問過的目錄,而後經過 j 來快速跳轉。less

理由 6:zsh 支持全局 alias 和後綴名 alias

bash 的 alias 只能作命令的縮寫,而 zsh 更進一步,使 alias 能夠縮寫命令的一部分,例如參數或環境變量設置。ssh

1
2
3
4
$ alias -s log=less
$ ~/package/tomcat/log/catalina.log # 至關於 less ~/package/tomcat/log/catalina.log $ alias -g PR=http_proxy=127.0.0.1:8087 $ PR curl https://twitter.com # 至關於 http_proxy=127.0.0.1:8087 curl https://twitter.com 

理由 7:zsh 有着豐富多彩的命令行提示符

bash 下經過設置 $PS1 已經能夠實現很豐富的提示符了,而 zsh 更進一步,能夠實現諸如多行提示符、提示符右對齊等功能。oh-my-zsh 配置文件中提供了很是豐富的提示符 theme 供選擇,我使用的是 gentoo 主題,比較簡潔,還能夠顯示當前 git 倉庫的狀態。

理由 8:zsh 有更多優雅的語法

例如修改 PATH,bash 下設置 $PATH 要求全部路徑都要寫在一行裏,目錄多了之後看起來就很難看。zsh 支持更加符合程序員審美觀的設置方式。

1
2
3
4
5
path=(
    ~/bin
    $path
    ~/package/smartsprites/bin
)

安裝 zsh

Linux 用戶經過各自發行版的包管理器直接安裝便可。

Mac 自帶一個 4.x.x 版本的 zsh,能夠直接使用,也能夠經過 homebrew 安裝最近剛剛發佈的 5.0.0 版本。推薦使用最新的 5.0 版本,對多字節字符提供了完整的支持,這一點對於國內用戶來講很重要。

設置爲默認 shell

經過命令 chsh 修改默認登陸 shell,須要注意的是,若是經過 homebrew 安裝了最新版本的 zsh,則須要 sudo 編輯 /etc/shells 加入一行 /usr/local/bin/zsh。而後再經過 chsh 來修改默認 shell,不然會提示 /usr/local/bin/zsh 不是合法的 shell。

安裝 oh-my-zsh 配置

對於每個像我這樣的 zsh 初級用戶來講,oh-my-zsh 就是救人於水火中的大殺器,強烈建議使用此配置上手 zsh。

做者提供了傻瓜安裝命令:

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh 

 

幾個必備的插件

autojump

幫助快速目錄跳轉的小工具。首先要安裝 autojump,而後在 .zshrc 中開啓 autojump 插件。它會記錄下來每一個你進入過的目錄,隨後經過 j 目錄名稱的一部分 就可快速跳轉到該目錄。

git

Git 命令補全,除了能夠補全 git 的子命令、命令開關等常規補全項之外,還能夠補全分支名等內容,用 git 必開的插件。

osx

提供一些與 Mac OSX 系統交互的命令,好比:

  • man-preview 經過 preview 程序查看一個命令的手冊,例如 man-preview git
  • quick-look 快速預覽文件
  • pfd 返回當前 finder 打開的文件夾的路徑
  • cdf 切換到當前 finder 所在的目錄
相關文章
相關標籤/搜索