最近開發需求大增,對 Unix-like 的終端機指令操作也越來越頻繁。之前瀏覽 Mac 推薦 App 清單時,一直看到 iTerm2 ,但是認為自己不需要用到這麼多功能,所以沒有研究。現在稍微有空後研究一下,覺得好好設定的話,的確指令操作效率會提升,而且介面美化後爽度提升。以下簡單記錄安裝過程。

iTerm2, zsh, oh-my-zsh, antigen 簡介

  1. iTerm2: Mac 上可以取代 "Terminal 終端機 "的 App,有多樣複雜的設定,如 視窗水平垂直分割並排、記憶視窗位置、支援多重 Profile 配置檔及自動切換、歷史指令及輸出記錄、畫面註解筆紀、Tmux 整合、自動觸發動作等,功能族繁不及備載,
  2. zsh: 與 bash 一樣為 一種 Unix shell, 在社群中有許多擴充套件
  3. oh-my-zsh: 一個 zsh 愛好者 共同投入開發的 zsh 框架,有許多常見開發環境相對應的擴充套件
  4. antigen: zsh 的擴充套件管理框架。有鑑於 zsh 資源眾多,為方便,該作者寫了 antigen 簡化套件管理流程

iTerm2split

iTerm2 安裝 + color scheme + 字型設定

這邊只是改造 終端機顯示,更換 color scheme、換字型,不想切換到 zsh 的其實做到這一步看起來就很舒服了。

有安裝 homebrew 的話,在 Mac 底下設定就很快。

brew cask install iterm2 

如果希望顯示特殊icon,如家目錄及 folder 等,可以安裝 nerd 系列的字型。至於 nerd 系列的字型可以見 Github: ryanoasis/nerd-fonts

網路上評價最高最多人採用的字型是 Adobe 出的 source-code-pro, 不過筆者個人偏好 hack 字型顯示的效果,可以依據個人偏好試試看。

brew tap homebrew/cask-fonts 
#搜尋 nerd 系列的字型
brew search nerd 
brew cask install font-hack-nerd-font font-sourcecodepro-nerd-font 

color scheme 可以去 Github: iTerm2-Color-Scheme2 慢慢找,如果想預覽,頁面最底下有說明,可以 GIt clone 下來以後,執行 preview.rb 試試看每種 color scheme 的顯示效果。

iTerm2 在 3.1.7 版 中加入了實驗性功能 應用 Metal 繪圖,可以開開看。

安裝 zsh + 切換 + 使用 antigen管理 + 好用的擴充套件

使用 homebrew 安裝 zsh + antigen

brew install zsh antigen
sudo sh -c "echo $(which zsh) >> /etc/shells" 
# 切換到 zsh
chsh -s $(which zsh) 

zsh 設定檔在 ~/.zshrc , 舉凡套件管理、export, aliases, source 都寫在這邊

Github:antigen頁面有說明如何使用 antigen 管理 zsh套件

在macOS 及 部分Linux 發行版,一些有名的 zsh 擴充套件也有可能包成 package ,像 homebrew 也可以安裝 zsh-completions,不過我盡量使用 antigen 安裝,除了 autojump, 不知道為甚麼在 oh-my-zsh 沒有作用。

zsh 的佈景主題,筆者採用了 Powerlevel9k,預覽如圖,特點是搭配 nerd 字型可以顯示 icon, 另外也可以自訂左右兩邊顯示的資訊,如 git 分支還有 virtualenv 狀態。自訂說明請參考官方 Github 頁面

以下是筆者的 .zshrc,

# 先引入antigen 
source /usr/local/share/antigen/antigen.zsh
# 這是 iTerm2 的 shell integration 
source ~/.iterm2_shell_integration.zsh
#  Mac 底下用 Homebrew 安裝 autojump 後引入
[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh
#  Google-cloud-sdk 提供的 zsh 自動完成
source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc
source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc

# 安裝 Powerlevel9K 佈景主題
POWERLEVEL9K_INSTALLATION_PATH=$ANTIGEN_BUNDLES/bhilburn/powerlevel9k

# Powerlevel9k settings
POWERLEVEL9K_MODE='nerdfont-complete'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(root_indicator background_jobs virtualenv time)

antigen theme bhilburn/powerlevel9k powerlevel9k

# Antigen 指定 oh-my-zsh 並引入擴充套件
antigen use oh-my-zsh
antigen bundle git
antigen bundle pip
antigen bundle bower
antigen bundle node 
antigen bundle xcode
antigen bundle osx
antigen bundle colored-man-pages
antigen bundle copyfile
antigen bundle python
antigen bundle copydir
antigen bundle docker
antigen bundle virtualenv
antigen bundle iterm2
antigen bundle sublime
antigen bundle urltools
antigen bundle vagrant
antigen bundle sudo

# 引入其他 github 上的 zsh 擴充套件
antigen bundle zsh-users/zsh-completions
antigen bundle zsh-users/zsh-autosuggestions
antigen bundle zsh-users/zsh-syntax-highlighting
antigen bundle zsh-users/zsh-history-substring-search ./zsh-history-substring-search.zsh

# Export settings,mac 下如果沒設好語系像 zsh 會跑不出中文檔名
export LANG=zh_TW.UTF-8
export SSH_KEY_PATH="~/.ssh/rsa_id"
export PATH="/usr/local/anaconda3/bin/:$PATH"

# 最後告訴 antigen 應用設定
antigen apply

antigen 會根據 zshrc 內的設定去抓 git 各擴充套件的檔案下來,存放在家目錄/.antigen 內。

筆者所安裝的擴充套件是根據自己的開發需求及網路推薦自訂清單,並不建議載入太多套件否則每次開新 terminal 載入 shell 環境時會變慢。個別擴充套件的用途可以參閱 Github 上整理好的清單

改造完成後,筆者現在的 shell 視窗比較多彩繽紛了,而且會記錄每次輸入的指令當作建議來源,自動完成更快。開發時看著看著心情就好上不少。

zsh