打造高富帥的PowerShell Core命令列模式

打造高富帥的PowerShell Core命令列模式

Powershell on-my-posh style

在升級 PowerShell Core 7 之後,還是發現一些問題。安裝 PowerShell Core 7 後的原始指令視窗輸入指令還是有跳動問題,還有字型支援度不佳等等。在改用 Windows Terminal 之後雖然改善一些,但是不滿意。有了之前改造 WSL 指令列的經驗,這次我們來改 PowerShell 指令列。

挑選字型

有了前一次 WSL 指令列的經驗,知道字型對最終輸出的影響很大。這裡我挑 FiraCode 來使用,因為它安裝最簡單,我是 chocolatey 愛用者:

choco install firacode-ttf

一行指令結束。

記得挑支援 Powerline 的。

重設 Windows Terminal (option)

我在安裝 PowerShell Core 7 之後重開 Windows Terminal 會出錯。目前最新版 Windows Terminal 有個好用的自動偵測功能,可以按 Ctrl+, 或組態 Settings,它會開啟 profiles.json 檔案,把檔案內容清空儲存,它會自動重新整理主機內 Shell 環境並自動重產 profiles.json。然後把剛剛安裝的字型設定上去。

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles
            "fontFace": "Fira Code"
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false,
                "fontFace": "Cascadia Mono PL"
            },
            {
                // Make changes here to the cmd.exe profile
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "cmd",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
                "hidden": false,
                "name": "PowerShell",
                "source": "Windows.Terminal.PowershellCore"
            },
            {
                "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
                "hidden": false,
                "name": "Ubuntu",
                "source": "Windows.Terminal.Wsl",
                "fontFace": "Ubuntu Mono derivative Powerline"
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            }
        ]
    },

設定在 defaults 是全部 profile 一起套用,比較省時。

安裝 posh-git, oh-my-posh

找一下 Posh 關鍵字,

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

Posh-git 提供像 Git Prompt
的效果。

oh-my-posh 提供像 Oh-my-posh paradox themes 效果。還有提供許多的 Themes 可以選擇,

目前測試,posh-git 與 oh-my-posh 在 PowerShell 與 PowerShell Core 都能正常安裝與使用。兩邊都要安裝一次。

設定啟用

posh-git 與 oh-my-posh 在 PowerShell (Core) 不會自動載入。我們修改一下 PowerShell (Core) 的預設 profile:

notepad.exe $PROFILE

他會開啟 Microsoft.PowerShell_profile.ps1 加入以下設定並儲存:

# Custom Import
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Powerlevel10k-Lean

這樣預設開啟 PowerShell (Core) 時就會自動載入設定與佈景主題。

PowerShell 與 PowerShell Core 兩邊都要設定一次。

可以透過 Get-Theme 來取得支援清單:

Get-Theme | select Name

Name
----
Agnoster
Avit
Darkblood
Fish
Honukai
Paradox
Powerlevel10k-Lean
PowerLine
pure
robbyrussell
Sorin
tehrob

現在,選一個您喜歡的佈景主題吧!

小結

現在不論是 WSL、PowerShell、PowerShell Core 都能擁有佈景主題機制,加上 Windows Terminal 都能美美的上場。(其實 cmder 效果更明顯,但我相信 Windows Terminal 會追上去的!)

1 則留言:

  1. indows 10 較新版提高 PowerShell 的安全性,需要調整一下:

    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。