by Niklas Jerominby Niklas Jeromin

合輯:Python 開發環境設定:zsh、zinit、pyenv、Poetry、Docker

在〈Ubuntu 安裝使用 zsh + 輕量級套件管理器 zinit〉一文中講述了如何在 Ubuntu 安裝 zsh 以及套件管理器 zinit,但省略了「佈景主題」的相關說明。

這次適逢拿到全新的工作機——M2 Macbook Air,我不得不重新建立 macOS 上的 zsh 與 zinit 開發環境。

通常遇到這樣「重新設定」的情境,我真的就是回頭看自己寫的文章,一步一步照著操作,可惜上述文章卻沒有關於 Powerlevel10k 的安裝部分,也對我自己造成了不便。

鑑於 Powerlevel10k 已成為我使用 zsh 時,必搭的佈景主題。所以,僅僅設定好 zinit 並不足夠,我還須補上 Powerlevel10k 這塊拼圖才行,於是有了本文的誕生。


Powerlevel10k 介紹

恩,其實也沒什麼好介紹的啦!你會點進這篇文章,想必也知道它是什麼

Powerlevel10k is a theme for Zsh. It emphasizes speedflexibility and out-of-the-box experience.

作為一個 zsh 佈景主題,它收獲了巨大的使用人口,幾乎可以視為 zsh 佈景主題的代名詞。

當然,仔細想想,使用 shell 並不一定要如此「花俏」,zsh 上也有很多簡潔的主題可供選擇。比如由 Rust 寫成,支援多種 shell 的 Starship,就值得一試。

starship.rs/guidestarship.rs/guide

只不過,在視覺上通常相對乏味的命令列界面下,能有如此華麗的外表,這種反差美,著實令人難以抵擋,所以我也只能成為 Powerlevel10k 的俘虜了。

本篇重點

網路上關於 Powerlevel10k 的教學已經很多,我無意再錦上添花。

本文主要補足:當你看完上一篇,也決定以 zinit 作為 zsh 套件管理器後,並打算使用 Powerlevel10k 作為佈景主題時,需要寫入的.zshrc設定——包括特殊字型的安裝。

希望你照著這兩篇文章,就能快速設定好「zsh + zinit + Powerlevel10k」生產環境。

如同之前的 pyenv 教學,在寫作本文時,我也會使用手上這台全新 Macbook Air 跟著操作,以確保與讀者在體驗與除錯上的一致性。

好,讓我們開始。

當前狀態:zsh + zinit

首先,我們先「對齊」一下系統目前的狀態,我的命令列如下圖:

iTerm2iTerm2

狀態說明:

  1. zsh 是 macOS 預設,不必安裝。
  2. 我安裝了 iTerm2 CLI 客戶端。話說,有人不裝嗎?XD
  3. 然後再依上述文章教學,安裝好了 zinit,目前.zshrc檔內只有 zinit 安裝時自動新增的內容,如下所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
### Added by Zinit's installer
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}Installation successful.%f%b" || \
print -P "%F{160} The clone has failed.%f%b"
fi

source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

# Load a few important annexes, without Turbo
# (this is currently required for annexes)
zinit light-mode for \
zdharma-continuum/zinit-annex-as-monitor \
zdharma-continuum/zinit-annex-bin-gem-node \
zdharma-continuum/zinit-annex-patch-dl \
zdharma-continuum/zinit-annex-rust

### End of Zinit's installer chunk

從上圖可知,少了 Powerlevel10k 的加持,這命令列的界面,看起來確實有些陽春。而要弄好 Powerlevel10k,主要有三步,下面一一說明。


第一步:安裝 Nerd Font

這基本上就是最重要的一步了,讓我們先看看官方文件怎麼說:

Powerlevel10k doesn’t require custom fonts but can take advantage of them if they are available. It works well with Nerd FontsSource Code ProFont AwesomePowerline, and even the default system fonts. The full choice of style options is available only when using Nerd Fonts.

 
👇 Recommended font: Meslo Nerd Font patched for Powerlevel10k. 👇

簡言之,可以不必特別安裝字型,但顯示效果會受到影響,講白了就是比較醜。其中又以 Nerd Font 系列字型才能支援完整的顯示效果

所以我也推薦安裝任一種 Nerd Font。這部分就看你平常都用哪種 monotype 字型,下載它對應的 Nerd Font 版即可。

如果打算直接安裝文件推薦的「Meslo Nerd Font」,那就不必特地自己下載安裝了,設定 Powerlevel10k 時就能自動下載。

我個人寫程式主要都使用 Google 推出的 Roboto Mono,所以選擇下載 RobotoMono Nerd Font。原則上安裝 Regular 字體即可。

也可以透過 Homebrew 安裝,但我沒試過,這部分就不細說,想必大同小異。

字型安裝完畢後,還要記得到你使用的 CLI 客戶端(在此為 iTerm2)去選用該字型

iTerm2 設定iTerm2 設定

第二步:設定.zshrc

非常簡單,只要在 zinit 的設定內容後面,再加上這行即可:

1
2
# Powerlevel10k
zinit ice depth=1; zinit light romkatv/powerlevel10k

存檔,並重新啟動 shell,此時就會開始安裝 Powerlevel10k,隨即會進入「外觀樣式選擇與設定」畫面。

第三步:設定 Powerlevel10k

這部分就不多贅述,照著指示一步一步完成設定即可。

第一次下載安裝完,就會進入設定畫面,之後如果要重新設定,需要使用指令p10k configure

流程一開始就會問你要不要下載「Meslo Nerd Font」字型,如果前面你沒有自己下載 Nerd Font,就選擇 Yes,如果已經下載自己慣用的字型,就選擇 No。

完成後,.zshrc會再自動增加下列內容,其實就是載入 Powerlevel10k 的樣式:

1
2
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

建議先完成上述內容後,再把 zinit 其餘設定加入.zshrc中。

最終,大功告成!

Powerlevel10k 完成圖Powerlevel10k 完成圖