美化我的 Terminal 環境,使用 Oh My Zsh、Zim 和 Powerlevel10k
前言
平常就能發現大多軟體工程師都會對自己的 Terminal 做一些樣式上的調整,不過我主要使用的 Warp 本身就提供一定程度的客製化功能,所以其實沒特別在意。
直到最近看社群上看到有人在討論,就心血來潮也來改看看。
Zsh 的客製化工具
使用平台為 MacOS
目前看到比較多人在使用的工具有這兩個:
Oh My Zsh 蠻早之前就有聽過,而 Zim 看了幾篇討論,能受到推薦是因為效能。
整體來說比 Oh My Zsh 啟動速度更快、更輕量,詳細可以看 zimfw 在 github wiki 上的 效能測試。
不過 Zim 會多出 .zimrc
管理 modules,安裝上可能因此遇到一些衝突,會需要手動排除。
相比之下 Oh My Zsh 單純許多,不論安裝或解除安裝都很簡單,在前端開發上我也還沒感受出明顯的效能差異。
這兩套就根據自己的偏好擇一使用即可,畢竟都試過了就都記錄一下。
安裝 Oh My Zsh
開啟 Terminal 後,執行下面指令:
完成安裝了,超級簡單!
打開 Terminal 後,就會看到 Terminal 的樣式已經改變了:
接下來可以到 .zshrc
中做一些設定,這個檔案會存在於 MacOS 的 Home Directory 中(就是 Finder 中使用者名稱的資料夾)。
檔案預設會是隱藏的,所以如果想在 Finder 直接看到檔案,可以按下快捷鍵 Command + Shift + .
來顯示隱藏的檔案。
工程師的話當然是用 Command Line 的方式開啟(?):
設定 Plugin
Plugin 能提供 Oh My Zsh 如語法 highlight、command line 提示或自動完成等功能,根據需求添加即可。
要注意安裝的 plugin 如果太多,會讓 Terminal 變慢。
設定主題
Oh My Zsh 有許多主題可以選擇,可以看這篇 wiki 挑一個喜歡的主題。
比較常見的應該是 agnoster
這個主題:
解除安裝 Oh My Zsh
想解除安裝的話也很簡單:
安裝 Zim
可以選擇自動安裝或手動安裝
如果已經有安裝需要和 zsh 搭配的套件,例如 homebrew
、nvm
之類,並且有自行排除問題的能力,我會建議選擇手動安裝,避免自動安裝覆蓋掉你目前的設定,可以參考手動安裝的文件
如果電腦還很乾淨,或是看不懂手動安裝的流程,那選擇自動安裝即可,等遇到問題再來排除(???):
執行後會顯示下面的資訊:
重新啟動 Terminal 後,就可以看到 Terminal 的樣式已經改變了。
用 Powerlevel10k 更換 Zim 的樣式
Zim 也有提供樣式可以更換,可以參考官方文件
但對我來說有兩個問題:
- 很醜。
- 視個別 theme 可能會額外需要安裝相應的 prompt enhancement modules,有點麻煩。
所以大多數人都會推薦額外安裝 Powerlevel10k
這個主題,當然 Oh My Zsh 也可以使用,但稍微麻煩一點。
Zim 安裝 Powerlevel10k 也相當簡單,只要在 .zimrc
中的 Modules
註解區塊下面新增 zmodule romkatv/powerlevel10k
這行即可:
然後在 Terminal 中執行 zimfw install
。
重新開啟 Terminal 後會出現以下內容,如果沒出現的話可以執行 p10k configure
來進行設定:
這邊是 Powerlevel10k 的設定向導,無法正常顯示代表沒有相應的字體,詳細可以參考文件安裝。
稍微查了一下,無法正常顯示的主題也剛好不是我喜歡的,所以我就直接繼續依照流程進行設定。
過程會不斷問關於一些排版或顯示的偏好,例如下面是指令之間的間距類型,根據自己的喜好選擇:
設定完成後重新開啟 Terminal 後,就可以看到 Terminal 變得超好看啦:
安裝 Zim 遇到的錯誤
分享一下我在安裝過程遇到幾種錯誤:
completion 被初始化過了
參考 Troubleshooting,有提供解決方案。
主要問題是已經有地方執行過 compinit
初始化的指令了:
可以用下面指令,搜尋看看有沒有檔案也會執行這兩行指令:
然後註解或是移除即可。
compdef: command not found
找不到原因,我是直接索性將 .zsh
相關的設定檔移除後修好了,不過像是 homebrew 就直接壞了…不過重新安裝就行。
解除安裝 Zim
比起 Oh My Zsh,Zim 的解除安裝真的麻煩許多,需要手動刪除 .zim
這個資料夾以及 .zimrc
這個設定檔。
然後檢查 .zshenv
、.zshrc
和 .zlogin
這三個檔案,移除裡面和 zim 相關的的初始化指令。
結語
原本只是想說改個 Zsh 樣式,寫一篇 Oh My Zsh 安裝的筆記,但 survey 下去就發現 Zsh 這東西也是大坑,不小心就會越寫越多。
也因為這樣遇到一些問題,像是上面的 Bug 外,安裝 Zim 後也讓我 nvm 的 Deeper Shell Integration 功能也失效了,變得必須自行 Debug,但也因此對 Zsh 的熟悉度又增加了一些,也算是好事(?)