教學課程 - 使用 Oh My Posh 設定 PowerShell 或 WSL 的自訂提示

本教學課程會提供一些資源和方向,協助您使用 Oh My Posh 自訂 PowerShell 或 Windows 子系統 Linux 版 (WSL) 的命令提示字元。 Oh My Posh 提供完整自訂命令提示字元體驗的主題功能,包括 Git 狀態色彩編碼和提示。

在本教學課程中,您會了解如何:

Windows Terminal Custom Prompt

安裝 Nerd Font

自訂的命令提示字元通常會使用字符 (圖形符號) 來設定提示的樣式。 如果您的字型不包含適用的字符,則會在您的整個提示中看到數個 Unicode 取代字元 '▯'。 若要查看終端機中的所有字符,建議您安裝 Nerd Font

(如果您想要類似 Cascadia Code 的字型,Caskaydia Cove Nerd Font 是由社群成員從 Cascadia Code 存放庫建置的字型。)

下載之後,您必須解壓縮並將字型安裝在您的系統上。 (如何將新的字型新增至 Windows)。

若要設定與 Oh My Posh 和 Terminal Icons 搭配使用的 Nerd Font,請從 Windows 終端機下拉式功能表選取 [設定] (Ctrl+,),以開啟 Windows 終端機設定 UI。 選取您想要套用字型的設定檔,例如 PowerShell,然後選取 [外觀] 索引標籤。在 [字體] 下拉式功能表中,選取 [CaskaydiaCove Nerd Font] 或您想要用於自訂提示的 Nerd 字型。

注意

如果您想要使用不支援字符圖示的終端機字型,例如 Cascadia Code PL,您可以考慮使用包含 minimal 函式的 Oh My Posh 主題,這表示不需要使用其他圖示。

使用 Oh My Posh 自訂 PowerShell 提示

Oh My Posh 可讓您使用完整色彩集來定義和轉譯終端機提示,包括可以使用內建主題或建立您自己的自訂主題。

安裝適用於 PowerShell 的 Oh My Posh

若要自訂 PowerShell 提示,您可以使用 winget 安裝 Oh My Posh。 輸入 命令:

winget install JanDeDobbeleer.OhMyPosh

這將會安裝:

您必須同意來源條款,且可能遇到有多個套件可用的執行個體。 在此情況下,請選取您想要使用的套件識別碼,然後重新輸入命令:winget install <package ID>

Screenshot of winget install oh my posh packages.

若要使用 Oh My Posh 的 Microsoft Store 版本,亦即有新版本可用時會自動更新,請使用下列命令:

winget install XP8K0HKJFRXGCK

輸入 oh-my-posh version 以確認您的 Oh My Posh 安裝版本編號。 為確保您取得最新的更新,您可以使用下列命令:winget upgrade oh-my-posh

注意

如果您想要在 PowerShell 安裝最新版本的 Oh My Posh,建議您先移除 OMP 模組的快取檔案,並解除安裝舊模組。 Oh My Posh 文件有提供關於如何執行這項作業的指示。如果您比較熟悉 Scoop 安裝程式,或允許自動化的手動安裝方法,這些方法也可用於在 Windows 上安裝,只要依照 Oh My Posh 文件中的指示即可。

選擇並套用 PowerShell 提示主題

您可以在 Oh My Posh 主題頁面上瀏覽完整的主題清單。

選擇主題,並使用此命令更新 PowerShell 設定檔。 (您可以使用自行選擇的文字編輯器取代 notepad。)

notepad $PROFILE

如果您收到路徑錯誤訊息,您可能還沒有 PowerShell 的設定檔。 若要建立設定檔,請使用下列 PowerShell 命令來建立,然後再次嘗試以文字編輯器開啟。

new-item -type file -path $profile -force

將下列項目新增至您的 PowerShell 設定檔檔案結尾,以設定 paradox 主題。 (以您選擇的主題取代 paradox。)

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\paradox.omp.json" | Invoke-Expression

現在,每個新的 PowerShell 執行個體都會從匯入 Oh My Posh 開始,並設定您的命令列主題。

如果您在嘗試開啟新的 PowerShell 執行個體時收到腳本錯誤訊息,您的 PowerShell 執行原則可能受到限制。 若要將 PowerShell 執行原則設為不受限制,您必須以系統管理員身分啟動 PowerShell,然後使用下列命令:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

注意

這不是您的 Windows 終端機設定檔。 您的 PowerShell 設定檔是在每次 PowerShell 啟動時執行的指令碼。 深入了解 PowerShell 設定檔 (英文)。

提示

如需常見疑問或問題的解答,請參閱 Oh My Posh 常見問題。 若要深入瞭解組態和一般設定,例如如何還原目前的工作目錄,請參閱 Oh My Posh 文件

使用 Oh My Posh 自訂 WSL 提示

現在 Oh My Posh 可讓您自訂 WSL 提示,就像使用內建主題自訂 PowerShell 提示一樣。

安裝適用於 WSL 的 Oh My Posh

建議您依照 Oh My Posh 文件中的 Linux 安裝指南安裝適用於 WSL 的 Oh My Posh,無論是使用 Bash、Zsh 或其他命令。

目前,以 Oh My Posh 自訂 WSL 提示的建議路徑會使用 Homebrew 封裝管理員進行安裝。 (現在 Homebrew 可以與 WSL 搭配使用!)安裝適用於 Linux 的 Homebrew 時,請務必依照後續步驟的指示,將 Homebrew 新增至您的 PATH 和 bash 殼層設定檔指令碼。

Homebrew 將會安裝:

  • oh-my-posh - 可執行檔,已新增至 /usr/local/bin
  • themes - 最新的 Oh My Posh 主題

選擇並套用 WSL 提示主題

Oh My Posh 主題會在 oh-my-posh 目錄中以 JSON 檔案的形式顯示。 您可以輸入 cd $(brew --prefix oh-my-posh),然後在清單輸入 cd themesls 來找到主題。 針對透過 WSL 執行的 Ubuntu-20.04,路徑可能類似於:\\wsl.localhost\Ubuntu-20.04\home\linuxbrew\.linuxbrew\Cellar\oh-my-posh\6.34.1\themes。 您也可以檢視主題在 Oh My Posh 文件中呈現的外觀:主題

若要使用主題,請從 themes 資料夾將主題複製到 $Home 資料夾,然後將這一行新增至在 $Home 資料夾中的 .profile 檔案底部:

eval "$(oh-my-posh init bash --config ~/jandedobbeleer.omp.json)"

只要將主題複製到 jandedobbeleer.omp.json 資料夾,就可以將 $Home 取代為您偏好使用的主題名稱。

或者,如果您在有 PowerShell 和 WSL 的 Windows 中使用 oh-my-posh,可以指向 Windows 使用者主資料夾中的主題,以與 WSL 共用 PowerShell 主題。 在您的 WSL 發行版本 .profile 路徑,將 ~ 取代為路徑:/mnt/c/Users/<WINDOWSUSERNAME>。 將 <WINDOWSUSERNAME> 取代為您自己的 Windows 使用者名稱。

如有需要,您可以自訂 Oh My Posh 主題

使用 Terminal-Icons 新增遺漏的資料夾或檔案圖示

Terminal-Icons 是 PowerShell 模組,在 Windows 終端機中顯示檔案或資料夾時,會新增檔案和資料夾圖示,並根據名稱或副檔名查找其適用的圖示。 Terminal-Icons 會嘗試使用已知檔案/資料夾的圖示,但如果找不到,則會回復為一般檔案或資料夾圖示。

若要使用 PowerShell 安裝 Terminal-Icons,請使用以下命令:

Install-Module -Name Terminal-Icons -Repository PSGallery

如需詳細資訊,包括使用方式和命令,請參閱 GitHub 上的 Terminal-Icons 存放庫。

其他資源

  • Oh my Posh 文件
  • Terminal-Icons 存放庫
  • Posh-Git 文件:Posh-Git 是 PowerShell 模組,提供可在 PowerShell 提示中顯示的 Git 狀態摘要資訊,以整合 Git 和 PowerShell。
  • PowerLine 文件:Powerline 是適用於 vim 的狀態列外掛程式,也為其他數個應用程式提供狀態列和提示,包括 zsh、bash、tmux、IPython、Awesome、i3 和 Qtile。