Starship: 全新的跨 Shell Prompt 主題
前言
各位還記得之前有介紹一系列的終端機自訂嗎?在 Linux 上,我們用了 zsh + oh-my-zsh + powerlevel10k。最近在更新這些工具時發現一件事,如果你們有在 Follow 他們的話應該知道我要說什麼了。沒錯,我要說的就是 powerlevel10k 停更了!
在 Powerlevel10k 的 Readme 的頂部,寫著四行字:
- 該專案提供非常有限的支援
- 不會再開發新功能
- 大多數 BUGS 將不會修正
- 幫助請求將被忽略
雖然這專案還沒被封存,但基本上不會再有開發動作了。我其實還覺得這主題挺好看的,但我也有想過要換個主題轉換一下風格,同時「接受」這個事實,尋找了許多不同的主題,正好在 Reddit 上看到 Starship,同時另一位作者也分享了這工具,就決定嘗試一下,發現其實不錯用,就來分享一下。
所以 Starship 是什麼?
根據 Starship 官方繁中文件:
適合任何 shell 的最小、極速、無限客製化的提示字元!
- 效率: 很快 – 非常非常 快! 🚀
- 客製化: 全方面設定你的提示字元。
- 通用性: 適用於任何 Shell 以及作業系統。
- 智慧: 一目了然地顯示相關資訊。
- 豐富的功能: 支援所有你喜歡的工具。
- 易用: 安裝快速 – 幾分鐘內即可開始使用。
Starship 是一個輕量、快速、且提供高自訂性的命令行提示(Prompt)主題,使用 Rust 語言撰寫,支援大部分主流的 Shell,包括 Powershell、bash、zsh 還有 fish,並支援主流作業系統,包括 Windows、macOS、Linux。另外他也和 Powerlevel 10k 一樣支援 git 提示、程式語言版本提示顯示。
安裝
本次安裝將介紹免系統管理員權限的安裝,並以主流的 Powershell、bash、zsh、fish 為例。
💡 官方預設的安裝方式是安裝到系統中,但我比較偏好安裝在使用者目錄底下,這樣就不需要系統管理員權限就能用了。
⚠️ 本文章之設定需要安裝 NerdFont 3 才能正常顯示。請參考之前的文章安裝或更新字型。不過和以前不一樣的是,這次請使用 NerdFont
字型,不要選擇 NerdFontMono
字型,否則圖示會超級小。
- Windows
直接透過 winget 安裝:1
winget install --id Starship.Starship --installer-type zip
💡
--installer-type zip
將下載 zip 檔案,並透過免安裝應用程式的方式安裝在使用者目錄中。 - macOS / Linux
執行以下命令:並將1
curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin
~/.local/bin
加入 PATH 中- bash / zsh
1
export PATH="$HOME/.local/bin:$PATH"
- fish
1
set -gx PATH "$HOME/.local/bin" $PATH
- bash / zsh
Shell 設定
接著在 Shell 中載入 Starship
⚠️ 請記得將其他主題(例如:oh-my-posh、powerlevel10k)從設定檔中移除。
- Powershell (以 Powershell 7 為例)
使用文字編輯器(例如:VSCode)開啟 PowerShell 設定檔加上以下命令1
code $profile
1
Invoke-Expression (&starship init powershell)
- bash
在~/.bashrc
中加上以下命令1
eval "$(starship init bash)"
- zsh
在~/.zshrc
中加上以下命令1
eval "$(starship init zsh)"
關於 oh-my-zsh
經實測 starship 可以和 oh-my-zsh 同時執行,但建議將 oh-my-zsh 的主題還原為預設值,並將 starship 命令放在
~/.zshrc
尾端。1
ZSH_THEME="robbyrussell"
- fish
在~/.config/fish/config.fish
或~/.config/fish/conf.d/starship.fish
(建議) 加上以下命令設定完成後,重開您的終端機應該看到這麼一個簡單的 Prompt,但其實已經啟用了大部分的功能,而圖示預設使用 Emoji。1
starship init fish | source
自訂
接著要來自定這個 Prompt,來發揮 Starship 的(幾乎)所有功能。
套用預先定義的設定
Starship 提供多個樣式供你選擇,你可以在官方文件中挑選你喜歡的樣式,在這邊我以 Nerd Font Symbols 為例。
點進去之後會跟你說如何套用,並在下方顯示設定檔內容,複製那行命令貼到終端上以套用。
1 | starship preset nerd-font-symbols -o ~/.config/starship.toml |
你會發現終端樣式立刻套用了,對的 Starship 會在下次 prompt 立刻顯示新設定檔中的設定,而不需要重新啟動終端機。
自定義設定
如果還是覺得不滿意的話(就是我),可以開啟設定檔進一步自訂,Starship 的設定檔放在 ~/.config/starship.toml
,使用文字編輯器(例如:VSCode)開啟。
1 | code ~/.config/starship.toml |
你可能會發現設定檔中出現了方框,這是因為缺少字型所致。
此時將編輯器字型也改成 NerdFont 即可正常顯示
在此讀者可以根據自己的喜好,參考官方文件進行修改,因為設定很多,我就不在這邊贅述。
另外如果需要更換 icon,可以到 Nerd Font 官網尋找你喜歡的圖示並複製到設定檔中。
筆者設定檔分享
設定檔是根據 Nerd Font Symbols 修改,主要改動內容:
- 調整物件位置,讓次要狀態在右邊,作業系統圖示在第二排
- 新增目錄圖示
- 在偵測到 bun 時不顯示 Node.js 內容
- 啟用作業系統模組
- 啟用命令狀態模組並更新圖示
- 啟用時鐘模組
- 更新容器圖示
starship.toml
1 | format = """$all\ |
後記
我改用 Starship 一陣子了,發現還不錯用,資訊給的很足,還跨主流的作業系統和 shell,而且還發現速度有提升,可能是因為他是 rust。之後我改用 fish 又發現速度更為提升了,之後我會再分享我使用 fish 的筆記。
最後,讓我們在永遠懷念一次 powerlevel10k。
- Title: Starship: 全新的跨 Shell Prompt 主題
- Author: jimchen5209
- Created at : 2024-10-09 21:27:53
- Updated at : 2024-11-27 14:50:30
- Link: https://blog.lce-lab.dev/2024/10/09/Starship-全新的跨-Shell-Prompt-主題/
- License: This work is licensed under CC BY-NC-SA 4.0.