背景

從 2017 年底換到目前工作之後就一直保持著 Zsh + Oh My Zsh + Powerlevel9k 的配置。最近從公司拿了新的 MacBook Pro,想說新電腦新氣象,可以來換個配置。大概研究了一下後就換成了 Zsh + Zim + Powerlevel10k。

換掉 Powerlevel9k 的理由很簡單,因為官方不再支援也 deprecated 的 repository 裡面也推薦使用 powerlevel10k。至於 Oh My Zsh 的話是 Zim 號稱速度在這些 configuration framework 裡面是最快的。有些舊一點或者是來自 Oh My Zsh 的 plugin 可能沒有直接列出使用 Zim 的安裝方式,不過通常去看一下程式碼以及載入方法後也是可以支援 ( 後面會提 )。以下會說明一下如何安裝以及配置這套環境。

安裝 Zsh

如果你的環境跟我新電腦都已經是 macOS Catalina(10.15) 以上,預設 shell 都已經是 Zsh 了。如果不追求新版本也不需要手動安裝 Zsh。不過我自己手上還有比較舊的 Mac,所以還是用 Homebrew 安裝了新版本保持一致。

brew install zsh

如果你是使用其他 Linux 的 distro 或是 WSL,請自行查閱所在環境 Zsh 的安裝方法。

安裝 Zim

Zim 的 repository 上有透過 curl 或者 wget 的安裝方法:

# 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

如果你之前已經有安裝其他 framework( 像是 Oh My Zsh),請在執行上面命令之前移除舊的 framework。

我第一次安裝也是使用了上面自動安裝的命令,不過因為我有在用 yadm 管理 Dotfiles 的關係,有再研究了一下手動安裝的方式。 簡單來說,會需要手動準備下面幾個檔案到你的家目錄底下,點開連接並複製到所需的路徑即可。

如果你本來環境裡面已經有這些檔案的話,可能要注意一下不要覆蓋到現有的環境。像是我已經有將 ~/.zshrc 加入版本管理,所以我是將 zshrc template 的內容加到現有的 ~/.zshrc 裡面而不是覆蓋。 檔案都準備好後執行底下的 install 命令 Zim 就安裝完成了。

zsh ~/.zim/zimfw.zsh install

用 Zim 安裝 plugin/module

Zim 使用了 ~/.zimrc 這個檔案來管理 plugin。如果稍微看一下 Zim install 的實作,其實可以發現 install 所做的是將 GitHub 上的 script 給下載下來並且更新 ~/.zim/init.zsh來讓 Zsh 每次打開都會載入這些 script。 對於普通的使用者,通常我們只需要看一下我們想用的套件裡面 Zim 的安裝指示,然後照著指示更新 ~/.zimrc 並且執行 zimfw install 就可以了。 像是powerlevel10k,我們只需要加一行 zmodule romkatv/powerlevel10k~/.zimrc 再執行 zimfw install 就大功告成了。

如果你使用的套件沒有列出使用 Zim 的安裝方法只是或者它是 Oh My Zsh 的官方套件,可能就需要改一下 zmodule 的參數來讓 Zim 找到需要載入的 script。譬如說我想使用 Oh My Zsh 裡面docker-compose以及kubectl兩個 plugin。因為 zmodule 預設只會找根目錄底下的檔案,我們需要使用 -f 來指定將子目錄加到 file path 以及使用 -s 來告訴 Zim 我們要載入的 script 在哪裡。這邊是我安裝上面兩個 plugin 的寫法:

# ~/.zimrc
# Other plugins in ~/.zimrc...
zmodule ohmyzsh/ohmyzsh -f 'plugins/kubectl' -s 'plugins/kubectl/kubectl.plugin.zsh' -f 'plugins/docker-compose' -s 'plugins/docker-compose/docker-compose.plugin.zsh'

更詳細的參數可以參考官方文件或者是這個 issue

Powerlevel10k

Powerlevel10k 我上面也有提到,是用 Zim 來安裝的。只要加一行 zmodule romkatv/powerlevel10k~/.zimrc 再執行 zimfw install 就可以了。如果你之前有的配置檔裡面已經 Powerlevel9k 的設置,官方文件是說跟之前幾乎會長得一模一樣。不過這次我是有透過 Powerlevel10k 提供的Configuration Wizard來重新設置:

p10k configure

官方文件裡面有提到說在跑前 p10k configure 要先安裝他們推薦的字體,不過你在使用的 terminal emulator 是 iTerm2 或 Termux,也可以透過 Powerlevel10k 自動安裝。

成果

這個是我搭配 iTerm2 內建的 Color Presets(Smoooooth) 最後長的樣子: zsh-zim-powerlevel10k-result.png
所有 Dotfiles 都可以在這裡找到,如果是直接想看這個 Powerlevel10k 配置的也可以直接點這個 .p10k.zsh。在使用體驗上,載入速度來說有比 Oh My Zsh 快一些些。如果對速度有要求的朋友可以參考,但真的很慢的話最好還是透過 profiling 研究一下載入的時候做了什麼比較好。以我的例子來說 載入 kubectl 的補全就佔了很大一部分時間,但也捨不得拿掉 XD。希望這篇文章有幫助大家打造屬於自己的環境。

Comments

comments powered by Disqus

Published

Category

Tooling

Tags

Contact