在開始之前,還是要先知道為什麼需要這些工具,就先上圖吧:
- 在 Terminal 內顯示你想要的資訊:git / 時間 / 自訂路徑 / conda / rvm / nvm / 執行結果顯示等等,應有盡有。
- 更方便的自動補完,可以直接用 tab 或方向鍵選擇想要補完的結果。
- 可以輸入部分指令,就顯示之前打過的指令,也可以用方向鍵上下搜尋
……
可能還有更多我還沒挖掘出來的方便性,但光是這三點,就足以讓我在每個工作環境都裝上 zsh + zim + powerlevel10k 了。
寫這篇的原因,是因為目前看到主要的文章都還是透過 oh-my-zsh 安裝,但其實根本就不需要 XD
甚至有的還是推薦 powerlevel9k,但是根據我自己的經驗,真的…很慢,體感上的慢。然而若直接繞過 oh-my-zsh 使用 powerlevel10k,會少了一些客製化的方便性,所以這邊就來推薦 Zsh IMproved FrameWork (zim),真的不太需要再做任何修改,就能享受常用到自動補完、選擇歷史指令等等功能。
安裝 zsh
masOS
系統有內建了,可以跳過。
Ubuntu
sudo apt install zsh
切換預設 Shell
chsh -s $(which zsh)
也可以手動切過去:
exec zsh
安裝 zim
根據他們 GitHub 的說明,就是希望快,而且能包含常用的補全功能等等,號稱能比其他 framework 快上一倍:
安裝方式極其簡單,可以利用 curl 或是 wget 一行解決。
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
另外如果有些人不喜歡常常被問要不要更新,可以透過下面的指令來取消檢查(通常不太建議…畢竟每 30 天才會問一次):
zstyle ':zim' disable-version-check yes
安裝 Powerlevel10k
zsh 主題,讓你的 zsh 變得更美。
在 zim 中加入設定
有了 zim 之後,就直接使用 zim 內建的 ~/.zimrc
來安裝吧。首先在 ~/.zimrc
加入這行:
zmodule romkatv/powerlevel10k
如果你還沒有一個好的文字編輯器(但是建議你去找一個…不想用純文字介面的可以使用 VSCode 的 Shell command),也可以用懶人方式,直接用 echo 指令把文字加在檔案後面:
echo "zmodule romkatv/powerlevel10k" >> ~/.zimrc
接著安裝它
zimfw install
然後就可以直接輸入 exec zsh
切換過去測試了!第一次會有一些步驟要設定,當然也能直接跳過,之後自己在 .zshrc
改就好。
如果不小心錯過了起始的設定小程式,也可以透過 p10k configure
重跑一次設定。
安裝特殊字體 Nerd Font
其實就是一般的字體,只是加上了些特殊符號當作 Icons。如果沒有安裝,可能會看到有些東西是亂碼,那些就是 Icons,而我們原本的字體並沒有包含這些 Icons 所以會顯示亂碼。
p10k configure
的第一步就可以選擇是否直接安裝字體,很方便。
自己安裝字體
如果想要使用其他的 Nerd font 可以到 https://nerdfonts.com/ 裡面的 Downloads 分頁找,有蠻多字體可以選擇。
我自己是 patch 內建的 Monaco
字體,步驟稍微複雜,可能需要另外拆開一篇分享。所以這邊就先從裡面挑一個吧,powerlevel10k 官方推薦的字體是 Meslo Nerd Font
。
安裝完之後幫 Terminal 套上字型設定,就大功告成了。
macOS 可以使用 Homebrew 的 cask
來安裝:
brew tap homebrew/cask-fonts
brew cask install font-meslo-lg-nerd-font
如果你碰到舊版的 caskroom/fonts
,也許會在安裝時碰上衝突:
Error: Cask font-meslo-lg-nerd-font exists in multiple taps:
這時候把舊的 tap 刪掉就好了(關於 tap 可以參考:Taps (Third-Party Repositories))
brew untap caskroom/fonts
能用 brew cask
安裝的完整清單可以上他們的 GitHub 找:
安裝完之後到 iTerm2 裡面套用:
選單 > Preferences > Profiles > Text 找到 Font 設定:
小結
到這邊其實只是初始設定完成,其實後面還有很多個人化設定可以研究,不過其實原始的預設值就很夠用了!
因為我是從 powerlevel9k 來的使用者,所以我自己還習慣使用 powerlevel9k 的設定如下:
# ~/.zshrc
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs) # <= left prompt
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status anaconda) # <= right prompt
POWERLEVEL9K_ANACONDA_LEFT_DELIMITER=
POWERLEVEL9K_ANACONDA_RIGHT_DELIMITER=
POWERLEVEL9K_SHORTEN_DELIMITER="."
(是說今天才看到 powerlevel9k 已經停止維護了 XD)
當然如果你是新使用者,建議還是直接修改他們的專用設定檔 ~/.p10k.zsh