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

繼續上篇介紹個人終端環境。這篇介紹zsh和z,其實這不侷限於os x,在全部的*nix系統中都是可用的。html

zsh

zsh做爲bash的替代品,天然不少人要問:why zsh? 在Zsh Workshop 有個長長的功能列表,用來回答這個問題。這裏講下我選擇zsh的緣由,固然,也是介紹zsh強大的功能。python

  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中能夠作到遞歸的通配符搜索。使用**/來遞歸搜索,如圖

      

是否是在不少場景下能夠取代findgit

以上都是我感受遷移到zsh以後很是實用的功能。要想從頭開始瞭解和學習zsh,能夠訪問A User’s Guide to the Z-Shell。不過你們都很忙,從頭開始本身學習和配置會很累。因此如今說到zsh,不得不提的就是oh-my-zsh,oh-my-zsh是一個開源的zsh配置管理框架,提供了大量實用的功能,主題等。如今基本都是標配了吧。如圖是我在用的默認zsh主題robbyrussell,如圖github

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

固然zsh也不是天衣無縫。在我使用過程當中有兩點不是很舒服:vim

1. 自動糾正並不老是那麼智能。如圖:bash

可是能夠對這些命令使用alias 加上nocorrect前綴,如:session

alias rake deploy ='nocorrect rake deploy'

  

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


下面講下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

 

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

相關文章
相關標籤/搜索