超簡單!十分鐘打造漂亮又好用的 zsh command line 環境

Gary Chu
Gary Chu
Dec 29, 2017 · 14 min read
  • 儘可能簡化需要理解的概念。除了 oh-my-zsh,不引入其他進階的 zsh 套件管理工具以及複雜的自訂功能
Image for post
Image for post

安裝、設定方式

總共有以下步驟:

  1. 修改 iTerm2 的 color scheme
  2. 安裝 powerline font
  3. 安裝 zsh
  4. 安裝 oh-my-zsh
  5. 安裝 zsh theme: powerlevel9k
  6. 設定 powerlevel9k

安裝 iTerm2:

雖然不是必要,內建的 Terminal app 也可以,不過 iTerm2 還是比較好用,下面的示範也全都是用 iTerm2

# 如果你從來沒有用過 brew cask 的話需要先跑這行
brew tap caskroom/cask
# 安裝 iTerm2
brew cask instal iterm2
Image for post
Image for post
iTerm2 Report Terminal Type 選單

修改 iTerm2 的 color scheme

這步驟很重要,預設的很醜,想要自己的 command line 看起來賞心悅目就絕對要換掉預設的

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
https://github.com/mbadolato/iTerm2-Color-Schemes 上的 Tomorrow Night Eighties 截圖

安裝 powerline font

因為我們要用的 theme 會用到很多的特殊 icon,所以 iTerm2 選用的字型必需要支援這種特殊 icon font。這類型的字體統稱為 powerline font(另外還有加強版支援更多特殊 icon 的叫的 nerd font)

Image for post
Image for post
非 powerline font
Image for post
Image for post
powerline font
# 先執行這行,才能用 homebrew 安裝字型。曾經執行過的人可以跳過這個指令
brew tap caskroom/fonts
# 安裝指令
brew cask install font-sourcecodepro-nerd-font
brew cask search nerd
Image for post
Image for post
這麼多字型夠挑了吧~
Image for post
Image for post
修改 iTerm2 字型設定

安裝 zsh:

zsh 是個取代 bash 的強大 shell,比 bash 好用幾百倍。這篇文章介紹的 command line 設定一定要跑在 zsh。沒用過的一定要試一下

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells" 
chsh -s $(which zsh)

安裝 oh-my-zsh

上一步裝完 zsh 後,就可以開始調整我們想要的 command line 外觀設定了,但是原始的 zsh 因為設定太難搞,所以多年前剛出現的時候沒有受到太多關注,直到有人寫了一套叫 oh-my-zsh 的 framework 來幫助大家使用 zsh,zsh 才火了起來。現在幾乎所有 zsh 好用的工具都有支援 oh-my-zsh,所以當然是要裝這東西

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

重頭戲!!安裝 zsh theme powerlevel9k

剛裝完 oh-my-zsh 以後,預設是使用內建的 theme robbyrussell,多了 git 資訊,顏色也看起來比原生 bash 好一些:

Image for post
Image for post
# 編輯 ~/.zshrc
ZSH_THEME=”agnoster” # 試試看把 robbyrussell 改成 agnoster
exec $SHELL
Image for post
Image for post
agnoster 看起來是不是比 robbyrussell 漂亮多了?
Image for post
Image for post
圖片來源:https://github.com/bhilburn/powerlevel9k
Image for post
Image for post
圖片擷取自 powerlevel9k github

powerlevel9k 安裝方式:

  1. powerlevel9k 不是 oh-my-zsh 內建的 theme ,必須另外下載
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
ZSH_THEME="powerlevel9k/powerlevel9k"# command line 左邊想顯示的內容
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir) # <= left prompt 設了 "dir"
# command line 右邊想顯示的內容
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(time) # <= right prompt 設了 "time"
Image for post
Image for post
左邊顯示當前資料夾路徑,右邊顯示時間

# 編輯 ~/.zshrc
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs) # 加上 "vcs"
Image for post
Image for post
多了 git branch 以及 git status 資訊

# 加上 "dir_writable"
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs)
Image for post
Image for post
/etc 沒有寫入權限,多出一個鎖頭提醒你

# 加上 "vi_mode"
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs vi_mode)
Image for post
Image for post
Image for post
Image for post

# 加上 "status" 顯示上一個指令的 return code:
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time)
Image for post
Image for post
指令正確執行,return code 為 0
Image for post
Image for post
指令執行錯誤,return code 為 127

# 加上 ram,顯示目前的 free memory
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status ram time)
Image for post
Image for post
還有 4.61G 的記憶體可用
POWERLEVEL9K_MODE='nerdfont-complete'

# 加上 load 顯示 CPU 忙碌程度
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status ram load time)
Image for post
Image for post
CPU 忙碌程度 2.45,還行
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(battery)
Image for post
Image for post
還可以用 6 小時又 11 分

# 左側
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir dir_writable vcs vi_mode)
# 右側
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs history ram load time)
# 若當前登入的帳號為你的帳號 xxx,就不用特別顯示出來
DEFAULT_USER="xxx"
# 使用 nerd font 時可以顯示更多 icon。詳情請參考 powerlevel9k wiki
POWERLEVEL9K_MODE='nerdfont-complete'

最後…

這篇文章介紹了怎麼樣把自己的 command line 替換成 zsh,並且使用很厲害的 powerlevel9k theme,不過 zsh 不只是可以換酷炫的 theme 而已,更重要的是還有很多比 bash 好用的功能可以大幅提升工作效率,又可以裝各種方便的 plugin,就留待有機會時再介紹囉


最後的最後…

你可能會好奇為什麼叫做 powerlevel9k (power level 9000)


財報狗技術部落格

紀錄財報狗在開發、行銷、營運的心得