打造高富帥的PowerShell Core命令列模式
在升級 PowerShell Core 7 之後,還是發現一些問題。安裝 PowerShell Core 7 後的原始指令視窗輸入指令還是有跳動問題,還有字型支援度不佳等等。在改用 Windows Terminal 之後雖然改善一些,但是不滿意。有了之前改造 WSL 指令列的經驗,這次我們來改 PowerShell 指令列。
挑選字型
- https://github.com/tonsky/FiraCode
- https://www.nerdfonts.com
- https://github.com/microsoft/cascadia-code/releases
- https://github.com/JetBrains/JetBrainsMono(這目前在 Powerline 還有些問題)
有了前一次 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 提供像 的效果。
oh-my-posh 提供像 效果。還有提供許多的 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 會追上去的!)
indows 10 較新版提高 PowerShell 的安全性,需要調整一下:
回覆刪除Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser