工具篇 | Oh My Terminal! 實用與裝X齊飛記

工欲善其事,必先利其器

今天窗外雨兒淅瀝,本叔心裡異常平靜,獻上一篇如何打造我們 Mac 上好用的終端紀實。落霞與孤鶩齊飛,實用與裝X並濟!

註:以下的步驟我都親身實踐過,環境 macOS Sierra 10.12,我相信無論比我高或者是低版本的系統都能夠正確執行,請大家放心。

最終效果圖:

關於 iTerm2 與 「Oh My Zsh」

iTerm2 是網上大家公認的在 Mac 上最好用的終端工具,比系統自帶的 Terminal 智能和強大,詳細的操作大法等大叔積累夠了再出一篇文章。終端工具通俗理解就是 Windows 下的 CMD。(Emmmmm...沒用過的同學就算了)

而 「Oh My Zsh」 就厲害了,不過還是要說一下 Shell。

我們都知道 Mac 的操作系統是基於 Linux/Unix 進行開發的,其實 Windows 也是,人家一開始不承認,最後面不得已才說借鑒了一部分 Linux/Unix,呵呵。言歸正傳,Shell是Linux/Unix的一個外殼,你理解成衣服也行。它負責外界與Linux內核的交互,接收用戶或其他應用程序的命令,然後把這些命令轉化成內核能理解的語言,傳給內核,內核是真正幹活的,幹完之後再把結果返回用戶或應用程序。

Linux/Unix提供了很多種Shell,為毛要這麼多Shell?其實就是那些大牛程序員看到不爽的Shell,就會自己重新寫一套,慢慢形成了一些標準,常用的Shell有這麼幾種,sh、bash、csh等,想知道你的系統有幾種shell,可以通過以下命令查看:

  1. $ cat /etc/shells

顯示如下:

  1. /bin/bash
  2. /bin/csh
  3. /bin/ksh
  4. /bin/sh
  5. /bin/tcsh
  6. /bin/zsh

這裡 Mac 會比 Linux 多預裝了一份 zsh。目前常用的 Linux 系統和 OS X 系統的默認 Shell 都是 bash,但是真正強大的 Shell 是深藏不露的 zsh。但由於複雜的配置,導致很長一段時間都無人問津,直到有一天,國外有個窮極無聊的程序員開發出了一個能夠讓你快速上手的 zsh 項目,叫做「oh my zsh」,Github網址:github.com/robbyrussell

步驟1:下載並安裝 iTerm2

官方下載網址:iterm2.com/

下載好安裝就行了,沒有什麼特別需要注意的。

注意:以下所涉及到的命令,若沒有特殊聲明,都是在 iTerm2 上運行的。

步驟2:下載並安裝 「Oh My Zsh」

打開 iTerm2,並在該終端上執行以下命令:

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

這句命令意思就是下載該腳本並執行

步驟3:下載並安裝 Powerline

Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome, i3 and Qtile.

說白了 Powerline 就是用 Python 寫的可以美化終端輸出的腳本,而且支持多種終端。

首先查看本機是否有安裝 pip:

  1. $ pip --version

如果沒有成功輸出版本信息的話,那就先安裝 pip:

  1. $ sudo easy_install pip

如果已經確認本機有安裝的話,那就來正式安裝 Powerline:

  1. $ pip install powerline-status

如果在這步提示因為許可權不足無法成功安裝的話(一般是 macOS Sierra 以上的用戶),是因為蘋果官方的 SIP 安全保護策略,以下步驟可以暫時關閉,等我們安裝好再重新開啟,可以放心操作。

關閉 SIP 操作:

  1. 點擊 Mac 電腦左上角的蘋果 Logo,選擇重新啟動
  2. 電腦關閉後,重新啟動前,按住 command+R,直到進入 「還原模式」
  3. 選擇頂部菜單欄上的使用工具,然後點擊 終端
  4. 輸入 csrutil disable,按下回車,提示成功關閉
  5. 重啟電腦

這樣就將 SIP 關閉了,重啟電腦後重新在 iTerm2 上執行安裝 powerline 的命令

安裝完後,可以出於安全性考慮,我們還是把 SIP 啟動,以保護我們的電腦吧!

打開 SIP 操作:

  1. 點擊 Mac 電腦左上角的蘋果 Logo,選擇重新啟動
  2. 電腦關閉後,重新啟動前,按住 command+R,直到進入 「還原模式」
  3. 選擇頂部菜單欄上的使用工具,然後點擊 終端
  4. 輸入 csrutil enable,按下回車,提示成功關閉
  5. 重啟電腦

步驟4:下載並安裝 Powerline 下的字體庫

字體庫的 Github 倉庫地址:github.com/powerline/fo

Step 1: 將倉庫 git clone 下來,然後進入到 install.sh 腳本文件所在的目錄;

Step 2: 執行命令安裝字體庫:

  1. $ ./install.sh

安裝完成後,會提示所有字體安裝到了 ~/Library/Fonts 文件夾下

步驟5:設置 iTerm2 的 Regular Font 和 Non-ASCII Font

如下圖所示,把 iTerm2 的設置里的 Profile 中的 Text 選項卡中里的 RegularFontNon-ASCIIFont 的字體都設置成 Powerline 的字體。(可以注意到,Powerline 字體名稱後面都有加 powerline 字樣,很好區分)

步驟6:下載並安裝終端配色方案

配色方案的 Github 倉庫地址:github.com/altercation/

Step 1: 將倉庫 git clone 下來,然後進入到文件夾;

Step 2: 雙擊 SolarizedDark.itermcolorsSolarizedLight.itermcolors 兩個文件就可以把配置文件導入到 iTerm2 的配色方案列表裡;

Step 3: 設置 iTerm2 的配色方案;

步驟7:下載並安裝終端 agnoster 主題

主題有很多種,這裡選擇了 agnoster 主題,大家熟悉操作之後,可以自己尋找主題並安裝

agnoster 主題的 Github 倉庫:github.com/fcamblor/oh-

Step 1: 將倉庫 git clone 下來,然後進入到文件夾;

Step 2: iTerm2 上運行 install 文件,主題將安裝到 ~/.oh-my-zsh/themes 目錄下

Step 3: 為 zsh 設置該主題

  1. $ vim ~/.zshrc
  2. # 找到 ZSH_THEME 欄位,並修改成:ZSH_THEME="agnoster"

步驟8:使用 zsh-syntax-highlighting 增加指令高亮效果

使用該工具的作用是當我們在終端上輸入正確或成功執行的命令時,會綠色提示;相反不成功或錯誤命令時,會有紅色警告提示。

zsh-syntax-highlighting 的 Github 倉庫地址:github.com/zsh-users/zs

Step 1: 進入 ~/.oh-my-zsh/custom/plugins/ 目錄;

Step 2: 將倉庫 git clone 到當前目錄;

Step 3: 在 .zshrc 文件中追加如下內容

  1. plugins=(zsh-syntax-highlighting)
  2. source ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Step 4: 最後重載配置文件

  1. $ source ~/.zshrc

這樣就同時配置好了zsh和oh-my-zsh。

至此,所有配置操作已經結束。可以酷炫地使用屬於你的 iTerm2 了!

優化步驟:配置 Finder 當前目錄打開 iTerm2

有時候我們想在 Finder 的當前目錄下打開 iTerm2,以避免在 iTerm2 手動進入相應路徑,網上有介紹使用 Go2Shell 插件的用法,在這裡我推薦使用 Mac 自帶的 Automator 創建 AppleScript 以執行完成我們的需求。

在 Launchpad 中打開 Automator:

選擇 文件 -> 新建 -> 服務

選擇 AppleScript 並粘貼進腳本代碼:

代碼如下:

  1. on run {input, parameters}
  2. tell application "Finder"
  3. set pathList to (quoted form of POSIX path of (folder of the front window as alias))
  4. set command to "clear; cd " & pathList
  5. end tell
  6. tell application "System Events"
  7. -- some versions might identify as "iTerm2" instead of "iTerm"
  8. set isRunning to (exists (processes where name is "iTerm")) or (exists (processes where name is "iTerm2"))
  9. end tell
  10. tell application "iTerm"
  11. activate
  12. set hasNoWindows to ((count of windows) is 0)
  13. if isRunning and hasNoWindows then
  14. create window with default profile
  15. end if
  16. select first window
  17. tell the first window
  18. if isRunning and hasNoWindows is false then
  19. create tab with default profile
  20. end if
  21. tell current session to write text command
  22. end tell
  23. end tell
  24. end run

粘貼完後,按 command+s 以保存,在彈出的提示框內輸入該服務的名字,自定義就好。

接下來設置一下直接調用該服務的鍵盤快鍵鍵:

完成!

相關設置

  1. 啟動 iTerm2 默認使用 bash 改用 zsh 解決方法: $ chsh-s/bin/zsh
  2. 如果想切換回原來的 bash: $ chsh-s/bin/bash
  3. ?+Q 關閉 iTerm2 時每次彈窗提示問題: iTerm 2 中,進入 Preference-General-Closing 欄目,將 Confirm"Quit iTerm2(?Q)" command選項勾選去掉就行
  4. 路徑前綴的XX@XX太長,縮短問題: 在 ~/.oh-my-zsh/themes 路徑下找到 agnoster.zsh-theme 文件,可使用文本工具打開,將裡面的 build_prompt 下的 prompt_context 欄位在前面加#注釋掉即可。

結語

工作和興趣上努力讓自己變得酷一點,生活上努力讓自己變得更溫暖一點。

另外,很感謝你閱讀完了本文,我相信你與眾不同。


weixin.qq.com/r/iUjo8PP (二維碼自動識別)

推薦閱讀:

TAG:Terminal(軟體) | MacOSX使用技巧 | ohmyzsh |