我在用的mac軟件(2)-終端環境之zsh和z(*nix都適用)


繼續上篇介紹我的終端環境。這篇介紹zsh和z,其實這不局限於os x,在所有的*nix系統中都是可用的。

zsh

zsh作為bash的替代品,自然很多人要問:why zsh? 在Zsh Workshop 有個長長的功能列表,用來回答這個問題。這里講下我選擇zsh的原因,當然,也是介紹zsh強大的功能。

  1. 兼容bash。這使得切換到zsh沒有任何成本。
  2. OS X默認的bash版本實在是太老了啊……
  3. 拼寫糾正。你總會不小心打錯命令。這時,zsh會進行自動拼寫糾正,如圖:
  4. 更強大的補全。
    • 連按兩次tab會列出所有的補全列表並直接開始選擇。如圖: 並且可以用方向鍵來選擇,但是對我這種很少用方向鍵的人來說只能猛敲tab了么,不是,zsh支持使用<ctrl-n/p/f/b>來選擇,perfect!
    • 命令選項補全。有多少人依然記不住tar的命令選項?中槍的去抄20遍……在zsh中只需要鍵入tar - <tab>就會列出所有的選項和幫助說明。用了zsh之后man少用了好多……
    • 命令參數補全。zsh 對命令的參數補全也很強大。鍵入kill <tab>就會列出所有的進程名和對應的進程號。如圖:這還不夠,試試鍵入kill sbin <tab>,如圖所示
    • 自動為sbin這個進程名補全了進程號。kill進程再也不用兩步操作了。
  5. 更智能的歷史命令。在用或者`方向上鍵`查找歷史命令時,zsh支持限制查找。比如,輸入`ls `然后再按方向上鍵,則只會查找用過的ls命令。而此時使用``則會仍然按之前的方式查找,忽略`ls`。
  6. 多個終端會話共享歷史記錄。經常有多個窗口,tab,tmux的多個session,panel。這些命令歷史不能共享實在是很糟糕的回憶。但是有了zsh之后,這些確實成了回憶了,所有的命令歷史都可以共享。
  7. 更智能的cd。首先你甚至不需要再輸入cd了,直接輸入路徑即可。第二,在你知道路徑的情況下,比如/usr/local/bin你可以輸入cd /u/l/b然后按<Tab>進行補全快速輸入。這顯然不夠,zsh還支持路徑替換,如果你其實想進入的是/usr/local/bin,不再需要../ 了,直接在當前輸入cd bin share即可,則bin會替換為share。在之后我會介紹z和autojumper,目錄跳轉會更方便。
  8. 更強大的alias。zsh不僅支持普通的alias,例如:alias ls ='ls --color=auto'。zsh還支持后綴alias,即以什么命令打開特定的后綴名文件。例如alias -s js=mvim,輸入hello.js,會以vim打開該文件,而不在需要vim hello.js
  9. 通配符搜索。這也是我最愛的功能之一。之前講過由於命令補全少用了很多man命令,而這個功能讓我少用了很多find命令。 一般的通配符搜索無非是ls -l *.log,如圖:
  10. 在zsh中可以做到遞歸的通配符搜索。使用**/來遞歸搜索,如圖

      

是不是在很多場景下可以取代find

以上都是我感覺遷移到zsh之后非常實用的功能。要想從頭開始了解和學習zsh,可以訪問A User’s Guide to the Z-Shell。不過大家都很忙,從頭開始自己學習和配置會很累。所以現在說到zsh,不得不提的就是oh-my-zsh,oh-my-zsh是一個開源的zsh配置管理框架,提供了大量實用的功能,主題等。現在基本都是標配了吧。如圖是我在用的默認zsh主題robbyrussell,如圖

可以發它能自動顯示當前所在的git分支以及當前本地狀態(黃色的小叉表示本地有更新未提交)。

當然zsh也不是完美無缺。在我使用過程中有兩點不是很舒服:

1. 自動糾正並不總是那么智能。如圖:

但是可以對這些命令使用alias 加上nocorrect前綴,如:

alias rake deploy ='nocorrect rake deploy'

  

2. 一些符號是zsh中保留的,使用需要轉義,如圖:


下面講下zsh和oh-my-zsh的安裝。

使用brew來安裝zsh

brew install zsh

設置zsh為默認

/etc/shells文件末尾添加

/usr/local/bin/zsh

執行:

chsh -s /usr/local/bin/zsh

最后記得將~/.bash_prorile或者~/.profile等配置拷貝到~/.zshrc中。

安裝oh-my-zsh

自動安裝:

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

  

可以選擇自己喜歡的主題。只需要修改~/.zshrc文件中的ZSH_THEME即可。

z和autojump

zautojump的功能類似,前者是簡單的shell腳本實現,后者由python實現,功能都是可以方便自動匹配到你最多使用的目錄並跳轉。我在用的是z,如圖,我在根目錄輸入z github可以自動跳轉到我常用的notice501.github.com這個目錄,也就是本博客的工程目錄。超級方便的工具。autojump用法類似,命令為j而不是z兩者的安裝方式:

z

git clone git@github.com:rupa/z.git

 

而后將z.sh放入環境變量即可。

autojump

autojump可以直接使用brew安裝

brew install autojump

 

有問題和分享歡迎留言交流。也歡迎關注我的微博

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM