參考文章
復(fù)習(xí)一下zsh
- 拼寫(xiě)糾正。你總會(huì)不小心打錯(cuò)命令,這時(shí),zsh會(huì)進(jìn)行自動(dòng)拼寫(xiě)糾正,如圖:但有時(shí)候自動(dòng)糾正沒(méi)有那么智能,如圖zsh拼寫(xiě)糾正可以對(duì)這些命令使用alias加上自動(dòng)糾正失敗
nocorrect前綴,如:
alias rake deploy='nocorrect rake deploy'
- 更強(qiáng)大的補(bǔ)全。
- 連按兩次Tab會(huì)列出所有的補(bǔ)全列表并直接開(kāi)始選擇。如圖:并且可以用方向鍵來(lái)選擇,但是對(duì)我這種很少用方向鍵的人來(lái)說(shuō)只能猛敲Tab了么,不是,zsh支持使用兩次Tab補(bǔ)全
<ctrl-n/p/f/b>來(lái)選擇,perfec! - 命令選項(xiàng)補(bǔ)全。有多少人依然記不住tar的命令選項(xiàng)?中槍的去抄20遍……在zsh中只需要鍵入
tar-<tab>就會(huì)列出所有的選項(xiàng)和幫助說(shuō)明。用了zsh之后man少用了很多…… - 命令參數(shù)補(bǔ)全。zsh對(duì)命令的參數(shù)補(bǔ)全也很強(qiáng)大。鍵入
kill <tab>就會(huì)列出所有的進(jìn)程名和對(duì)應(yīng)的進(jìn)程號(hào)。如圖這還不夠,試試鍵入命令參數(shù)補(bǔ)全1kill sbin <tab>,如圖所示:自動(dòng)為sbin這個(gè)進(jìn)程名補(bǔ)全了進(jìn)程號(hào)。kill進(jìn)程再也不用兩步操作了。命令參數(shù)補(bǔ)全2
- 連按兩次Tab會(huì)列出所有的補(bǔ)全列表并直接開(kāi)始選擇。如圖:
- 更智能的歷史命令。在用
<ctrl-p>或者方向上鍵查找歷史命令時(shí),zsh支持限制查找。比如,輸入ls,然后再按方向上鍵,則只會(huì)查找用過(guò)的ls命令。而此時(shí)使用<ctrl-p>則會(huì)仍然按之前的方式查找,忽略ls。 - 多個(gè)終端會(huì)話共享歷史記錄。經(jīng)常有多個(gè)窗口,tab,tmux的的多個(gè)session,panel。這些命令歷史不能共享實(shí)在是很糟糕的回憶。但是有了zsh之后,這些確實(shí)成了回憶,所有的命令歷史可以共享。
- 更智能的
cd。首先你甚至不需要再輸入cd了,直接輸入路徑即可。第二,在你知道路徑的情況下,比如/usr/local/bin你可以輸入cd /u/l/b然后按<tab>進(jìn)行補(bǔ)全快速輸入。這顯然不夠,zsh還支持路徑替換,如果你其實(shí)想進(jìn)入的是/usr/local/bin(作者注:疑為/usr/local/share),不再需要../了,直接在當(dāng)前輸入cd bin share即可,則bin會(huì)替換為share。在之后,我會(huì)介紹z和autojumper,目錄跳轉(zhuǎn)會(huì)更方便。 - 更強(qiáng)大的alias。zsh不僅支持普通的alias,例如:
alisa ls = 'ls --color=auto'。zsh還支持后綴alias,即以什么命令打開(kāi)特定的后綴名文件。例如alias -s js=mvim,輸入hello.js,會(huì)以vim打開(kāi)該文件,而不在需要vim hello.js。 - 通配符搜索。這也是我最愛(ài)的功能之一。之前講過(guò)由于命令補(bǔ)全少用了很多
man命令,而這個(gè)功能讓我少用了很多find命令。一般的通配符搜索無(wú)非是ls -l *.log,如圖:在zsh中可以做到遞歸的通配符搜索。使用一般通配符搜索**/來(lái)遞歸搜索,如圖:是不是在很多場(chǎng)景下可以取代zsh遞歸通配符搜索find?
配置zsh
目前流行的安裝配置文件有2個(gè).一個(gè)是官網(wǎng)的grml-zsh-config;另一個(gè)是oh-my-zsh.本文利用oh-my-zsh來(lái)配置。
curl -L http://install.ohmyz.sh | sh
- 通過(guò)wget
wget --no-check-certificate http://install.ohmyz.sh -O - | sh
- 手動(dòng)安裝
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
安裝完成之后退出當(dāng)前會(huì)話,重新打開(kāi)一個(gè)終端窗口,你就可以看到這個(gè)彩色的提示了:
成功安裝oh-my-zsh
-
zsh 的配置主要集中在用戶當(dāng)前目錄的.zshrc里,我們?cè)诎惭boh-my-zsh后,已經(jīng)對(duì)這個(gè)文件做了一定的配置,如圖:
默認(rèn)的.zshrc文件
配置完之后,我們需要重啟終端或打開(kāi)新的標(biāo)簽,或者用以下命令:
source ~/.zshrc
很明顯的,oh-my-zsh設(shè)置了一個(gè)默認(rèn)主題(紅框),我們可以在其wiki里挑選、學(xué)習(xí)更換主題。oh-my-zsh提供了數(shù)十種主題,相關(guān)文件在~/.oh-my-zsh/themes目錄下,你可以隨意選擇,也可以編輯主題,滿足自己的特定需求,我們也可以在.zshrc里將其設(shè)置為隨機(jī)主題,這樣每次啟動(dòng)都會(huì)隨機(jī)選一個(gè),直到你遇到了喜歡的,再確定下來(lái):
ZSH_THEME="random"
- zsh插件。就像主題,oh-my-zsh提供了很多插件,不妨到
~/.oh-my-zsh/plugins里看看都提供了什么插件,或者還是像在主題中一樣,去其wiki里查看,如圖oh-my-zsh插件
插件也是在.zshrc里配置,找到plugins關(guān)鍵字,你就可以加載自己的插件了,系統(tǒng)默認(rèn)加載 git ,你可以在后面追加內(nèi)容,如下:
plugins=(git textmate ruby autojump osx mvn gradle)
簡(jiǎn)單介紹幾個(gè)插件
- git:當(dāng)你處于一個(gè) git 受控的目錄下時(shí),Shell 會(huì)明確顯示 「git」和 branch,另外對(duì) git 很多命令進(jìn)行了簡(jiǎn)化,例如 gco=’git checkout’、gd=’git diff’、gst=’git status’、g=’git’等等,熟練使用可以大大減少 git 的命令長(zhǎng)度,命令內(nèi)容可以參考~/.oh-my-zsh/plugins/git/git.plugin.zsh
- textmate:mr可以創(chuàng)建 ruby 的框架項(xiàng)目,tm finename 可以用 textmate 打開(kāi)指定文件。
- osx:tab 增強(qiáng),quick-look filename 可以直接預(yù)覽文件,man-preview grep 可以生成 grep手冊(cè) 的pdf 版本等。
- autojump:zsh 和 autojump的組合形成了 zsh 下最強(qiáng)悍的插件,功能是可以方便自動(dòng)匹配到你最多使用的目錄并跳轉(zhuǎn)(功能相似的還有z,z是shell腳本實(shí)現(xiàn),autojump是Python實(shí)現(xiàn)),利用homebrew安裝:
brew install autojump
確保你在.zshrc的plugins中已加入autojump,然后你就可以在你的歷史記錄中跳來(lái)跳去了。

autojump插件設(shè)置








