Zsh 的好用應該大家都知道,有很多好用的 plugin 如 Oh My Zsh、zsh-autosuggestions 等等,也有很多 中文的教學文 帶你一步一步把終端機變好看。但 PowerShell 相關的文章卻很少,中文資源甚至比日本製的壓縮機還稀少,當初趁著學期間沒作業之餘,把自己的 PowerShell 弄得好用一點,於是就有了這篇文的誕生。
但其實本來是想用完馬上寫的,結果沒想到用完後事情一個接著一個來,就被我拖到現在了 : (
主要會將 PowerShell 裝上 Oh My Posh 並套用主題,接著加上 autosuggestion 和 syntax-highlight 的功能,讓他變得跟 Zsh 一樣好用!
安裝 Nerd Font
因為接下來使用的主題會有特殊 icon,因此需要將字體替換成 Nerd Fonts,也可以最後設定好發現有些符號顯示不出來再裝。相關字體網路上有很多,這裡提供一個 官網列的字體表,找自己喜歡的就可以,我個人是用 MesloLGS NF。
下載四個不同字重的 .tff,如果用不到粗體或斜體的話,可以只載第一個
接著照著平常安裝字體的流程安裝就好,在大部分的作業系統只需要點開檔案並點擊「安裝」就好
設定 PowerShell 字型
打開 Windows 終端機,點擊上方 tab 的下拉式選單 ⌵
> 設定 > Windows PowerShell > 外觀 > 字體,更換成剛剛想要的字體即可
下載 Oh My Posh
- 方法一:winget
1
winget install JanDeDobbeleer.OhMyPosh -s winget
方法二:Microsoft Store https://apps.microsoft.com/detail/xp8k0hkjfrxgck?mode=mini
- 其餘方法:manual、chocolatey 參照 Oh My Posh 官方文件
下載後,可以利用 oh-my-posh version
確認是否安裝成功(需重啟 Powershell 以更新環境變數),正確安裝會顯示版本號(e.g. 24.8.0)
未來若需更新版本
1 winget install JanDeDobbeleer.OhMyPosh -s winget
設定 Shell 使用 Oh My Posh
編輯自己的 Powershell 設定檔,可於 Powershell 中輸入 $PROFILE
查看設定檔位置。
若該檔案未存在,可利用以下指令建立
1 new-item -type file -path $profile -force
開啟設定檔,並在最後一行加入
1
oh-my-posh init pwsh | Invoke-Expression
如此便能讓 Powershell 裝上 Oh My Posh。
設定主題
先到尋找自己想要的主題,可上 官網 查看或利用 Get-PoshThemes
直接在 Powershell 中預覽。
選定好主題後,將上述命令改為
1
oh-my-posh init pwsh --config "path\to\your\theme\config" | Invoke-Expression
其中主題設定檔的位置可利用 $env:POSH_THEMES_PATH
此環境變數確認。
最後重新載入 Powershell 就可以看到效果了
1
. $PROFILE
註:因為後續有些額外的需求(顯示 git branch 及當前 conda 環境等等),加上用一段時間後發現用不到一些預設顯示的資訊,因此有稍微研究如何撰寫主題的設定檔,詳細內容請見下一篇(有生之年一定寫)。
Auto Suggestion - PSReadLine
這是一個 Powershell 很好用的 module,裡面提供了很多功能與擴充性,如這篇會提到的 Auto Suggestion 就是他能做到的功能之一。
首先需要先安裝此套件
1
Install-Module PSReadLine
接著打開 $PROFILE
開始進行設定,將以下內容加進 $PROFILE
1
2
3
4
5
6
7
8
9
10
11
12
# Auto Suggestion
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadLineOption -Colors @{ InlinePrediction = '#666666'}
Set-PSReadLineKeyHandler -Chord "Ctrl+RightArrow" -Function ForwardWord
# Auto Complete
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
- 第四行:最近新增的功能,有兩種模式 ListView 及 InlineView,預設可利用 F2 切換,詳細效果如下
- 第六、七行:綁定上下鍵來選擇歷史指令
- 第八行:設定預測的顏色(此設定為灰色)
- 第九行:允許使用 Ctrl + 右鍵,僅接受預測的第一個字
- 第十二行:按下 Tab 以提供選單
官方也有提供 參考範例,當中有更多功能的設定方法,可自行參考。