使用 Zsh + Zim + Powerlevel10k 打造美觀又快速的 Terminal

Terminal 作為工程師最常使用的幾個工具之一,良好的視覺呈現與操作流程不僅能舒緩眼睛疲勞,更有助於提升工作效率;本篇文章除了紀錄本人在瀏覽數篇文章後所找到的最佳設定途徑,也將針對所選擇工具與過往常用者相比之優勢略作說明

環境說明

本文之設定教學最適於搭載 iTerm2、zsh 的 Mac 用戶,不過只要是能安裝使用 zsh 之作業系統,皆能參考流程進行設定;若為未安裝 iTerm2 或 zsh 的 Mac 可參考以下流程使用 Hombrew 進行安裝、設定

iTerm2

Mac 用戶想改造 terminal 的必備工具

# brew tap homebrew/cask-cask
# brew cask install iterm2

zsh

macOS 在 Catalina 版之後皆以此作為預設 shell

# brew install zsh zsh-completions

並可更改預設 shell 為 zsh

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

重新啟動 terminal 再執行以下指令,顯示 /bin/zsh 即為更改成功

# echo $SHELL

改造流程

1/ 安裝 zim

zim 是一個讓使用者更便利於擴充 shell 功能的設定框架,其初始設定即包含了兩大常用的擴充功能 autosuggestions 和 syntax highlighting

可以使用 curl 進行安裝

# curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh

或使用 wget 進行安裝

# wget -nv -O - https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh

2/ 安裝 powerlevel10k

powerlevel10k 是一個讓使用者更輕鬆於管理 shell 視覺呈現的設定框架,其便捷的設定流程可以快速打造出理想的介面

~/.zimrc 中添加 zmodule romkatv/powerlevel10k 並執行以下指令

# zimfw install

3/ 進行介面設定

執行以下指令,並依照提示及自身喜好進行介面設定

# p10k configure

到此為止,terminal 的設定就已經告一段落,不過這邊再提供幾個小撇步

  • 若 Mac 用戶想要修改色系,可以至 Preference > Profiles > Colors 直接修改色碼或由 Color Presets 處匯入搜尋到的 .itermcolors

  • 若想在 VSCode 中也使用相同設定,可以參考這篇

接下來將針對所選擇的 zsh、zim、powerlevel10k 等工具,分析其與過往高使用率的工具相比所具備之優勢

工具比較

bash v.s. zsh

雖然蘋果在 Mac Catalina 版之後,就將預設 shell 由 bash 更改為 zsh,不過這邊還是列出兩者之間三個重要的差異

  • 語法兼容性:在 zsh 中,雖然不完全支援 bash 或是其他常見 shell 的語法,但是可以透過其獨有的仿真模式 (emulation mode) 達到高度甚至近乎完全兼容

  • 語法易用性:zsh 的語法在簡潔性與反饋的可讀性上完勝 bash,變數引用、陣列操作、通用符展開等都是顯而易見的例子

// bash 中的變數引用
# echo "$var"
// zsh 中的變數引用
# echo $var// bash 中的陣列操作
# echo ${array[index]}
// zsh 中的陣列操作
# echo $array[index]// bash 中的通用符展開
# echo *.conf
*.conf
// zsh 中的通用符展開
# echo *.conf
zsh: no matches found: *.conf
  • 功能擴充性:zsh 可以透過 oh-my-zsh、zim 等設定框架進行視覺調整和功能擴充以優化整體使用體驗

oh-my-zsh v.s. zim

oh-my-zsh 和 zim 其實都是很好管理擴充模組的設定框架,但是在執行速度一直是 oh-my-zsh 為人所詬病的地方,而 zim 在速度上面就顯得優秀許多,以下是各個常見框架的速度比較 (數據源自 zim github wiki)

// Execute on Laptop (SSD, Lenovo X1 Carbon Gen 3)
The average startup time for oh-my-zsh is: 0.085321605550050306
The average startup time for zplug is: 0.09151599999999695
The average startup time for prezto is: 0.071930000000000077
The average startup time for zim is: 0.053609999999999602// Execute on Desktop (HDD, AMD 8-core @5GHz)
The average startup time for oh-my-zsh is: 0.10345636363636242
The average startup time for zplug is: 0.11895545454545389
The average startup time for prezto is: 0.093861818181817588
The average startup time for zim is: 0.055364545454545944

powerlevel9k v.s. powerlevel10k

powerlevel9k 是成名已久的視覺設定框架,而 powerlevel10k 不僅能透過設定檔一途自訂介面,還提供了 p10k configure 引導設定指令,可以幫助使用者用極短的時間打造出理想的介面

結語

在 terminal 的改造上,不斷有新的工具推陳出新,若是多年後有讀者看到此篇文章,建議可以多嘗試以不同關鍵字進行搜尋以找到最便利、最快速的工具以幫助自己提升工作效率

參考連結