【2021】 十分鐘打造zsh command line 環境!

致敬 財報狗的 「超簡單!十分鐘打造漂亮又好用的 zsh command line 環境」而翻修的文章。

William
WilliamDesk
7 min readNov 11, 2021

--

因為原本的文章有些 command 已經不再能夠使用,當時花了蠻多時間google到各個不同的blog找到散落的解法。

因此花一些篇幅重新把新的command 紀錄起來,希望對大家日後找尋時都有幫助。

圖片來源:https://github.com/romkatv/powerlevel10k

安裝步驟:

  1. 安裝 iTerm2
  2. 修改 iTerm2 的 color scheme
  3. 安裝 powerline font
  4. 安裝 zsh
  5. 安裝 oh-my-zsh
  6. 安裝 zsh theme: powerlevel10k
  7. 設定 powerlevel10k
  8. 推薦安裝的 zsh plugin: zsh-syntax-highlighting 、zsh-autosuggestions 和 zsh-completions

1. 安裝 iTerm2

財報夠原本的安裝方式已經無法使用了,可以採用以下的指令替換。

安裝好後,調整 Report Terminal Type 的設定,設定成 xterm-256color,在terminal 才有漂亮的顏色呈現。

設定 Report terminal type

2. 修改 iTerm2 的 color scheme

到這個 iTerm2-Color-Schemes github 將一些其他開源的 color scheme import 進去 iTerm2。

import custom color scheme

根據財報狗文章的推薦,我也是跟著選了 Tomorrow Night Eighties 這個配置。影響我蠻深遠的,後來在使用 Google Doc 寫技術說明文件時,也會使用Code Block 外掛時,也是採這個color scheme 的配置呈現 command / code。

import 完之後記得要再點選選單選擇剛剛import後的 color scheme。

3. 安裝 powerline font

因為要能讓特殊icon 呈現在 command line 上,這類特殊的icon字體可以透過有支援顯示的 powerline font 字體檔而呈現。 (像是上圖左上角我設定的 command line,有房子的圖案)

我也是採用財報狗大推薦的 Sauce Code Pro Nerd Font Complete。安裝方式也有些微的不一樣,但應該是同一種字體才對。

字體的 github source 在這,也有詳細的教學和其他字體可供選擇。

安裝 powerline font

install 完成後,至iTerm2 修改字型設定,改成剛剛下載的字體檔案。

至 iTerm2 設定調整字體

4. 安裝 zsh

安裝zsh 取代 bash,command line設定一定要在zsh上執行,原本mac預設的終端機 bash是無法使用的。

安裝zsh並設為預設shell

5. 安裝 oh-my-zsh

這是 zsh的框架套件,是用來輔助設定zsh相關設定的。詳細可以瀏覽一下 oh-my-zsh的官方網站 以及 oh-my-zsh github

覺得有點共鳴的是 oh-my-zsh 的作者Robby Russell,也是 Ruby on Rails developer!

安裝 oh my zsh

6. 安裝 zsh theme: powerlevel10k

由於原本財報狗推薦的 powerlevel9k 已經archive了。目前是採用最新的powerlevel10k,安裝方式也能支援homebrew了。
This repository has been archived by the owner

原本預設的theme 是作者的名字 “robbyrussell”,在oh-my-zsh的wiki上也有各式各樣的theme。

但我們會將它替換成 powerlevel10k,他可以提供command line顯示一堆有的沒有的icon,例如github icon、gitlab icon、git分支icon等等,可以讓你知道專案的repo在哪以及分支commit情況,對我來說很友善。

這也是為什麼剛剛要去設定 powerline font的原因。有興趣的開發者也可以去瀏覽一下 powerlevel10k 的 github

powerlevel10k 的安裝方式

接著打開 ~/.zshrc 檔案,這是 zsh 的設定檔案,我們會在這設定主題、以及command line的左右側各要顯示什麼內容。

powerlevel10k說明文件裡面也有所有可以放置的內容,原本powerlevel9k的設定項也兼容適用的樣子。大家可以看想要做怎樣的設定讓自己操作起來比較舒適。

我的設定項如下,在設定時這些項目的設定會依照你排列的順序展現。左側有 
- dir 顯示目前現在的工作目錄。
- dir_writable 顯示如果所在目錄底下我沒有寫入權限會給我的鎖頭。
- vcs 最大推一定要有的,會顯示目前git的資訊,連github的icon也能呈現。
右側有
- status 指令如果出錯的話,會出現紅底提示。
- ram 顯示目前的 free memory 狀況。
我的 .zshrc 檔案設定內容

一樣每次調整設定完時,都要用以下指令重新開啟zsh吃設定。

重整zsh指令
我的 iTerm2 command line 展現畫面

▍powerlevel9k 的安裝者 migrate 成 powerlevel10k的方式

有些人開發者可能之前安裝了 powerlevel9k,要是想改成powerlevel10k的話,官方文件也有說明如何migrate上去,基本上是完全兼容,只要三行指令即可完成!

migrate powerlevel9k 至 powerlevel10k

8. 推薦安裝的 zsh plugin: zsh-syntax-highlighting 、zsh-autosuggestions 和 zsh-completions

如果有看到我上一張 iTerm2 截圖,會發現我的 docker 字樣是呈現綠色的,而且我的command還沒打完,已經有淡淡的文字提示我過去用這個指令做了什麼事情。

這是我安裝了兩個覺得zsh 裡面最推薦的懶人 plugin,呈現綠色/紅色的 highlight 是 zsh-syntax-highlighting, 這個 plugin 會提醒你目前這個 command 在你的 shell 裡面是有效指令還是無效指令。

zsh-autosuggestions 會有淡淡的文字提示顯示剩餘的指令,這是會從你的 history 裡面尋找最近一筆打相關指令時的樣貌。要是要打重複的指令,一個鍵盤方向右鍵就全部指令完美重現節省時間。

和 “zsh-completions” 會提供完整的 「補完功能」。在你不確定後面該command要接什麼內容時,可以按 tab 鍵讀取plugin 內和這command 相關的 completion 內容,homebrew 也有一份completion 清單可供zsh做使用

有了 oh-my-zsh,plugin 安裝方式也變得很簡單:

安裝三個 plugin
在 .zshrc裡面調整plugin設定

最後一樣老樣子記得 restart zsh,就大功告成啦!

--

--