將美化進行到底,把 PowerShell 做成 oh-my-zsh 的樣子
發布于 2017-12-26 07:00 更新于 2018-02-19 22:53
不知你有沒有看過 Linux 上 oh-my-zsh 的樣子?看過之后你一定會驚嘆,原來命令行還能這么玩!然而 Windows 下能這么玩嗎?答案是可行的,接下來就來看看怎么玩。

Windows 下我們用 oh-my-posh 在 PowerShell 中實現這樣的效果。分以下三步走:
安裝 oh-my-posh
我們需要先以管理員權限啟動 PowerShell,以便執行安裝操作。(具體是在開始按鈕上點擊右鍵,選擇“Windows PowerShell (管理員)”。)

然后,運行命令以安裝 posh-git,這是 oh-my-posh 的依賴。
代碼語言:JavaScript代碼運行次數:0運行復制
Install-Module posh-git -Scope CurrentUser
如果此前沒有安裝 NuGet 提供程序,則此時會提示安裝 NuGet;如果此前沒有開啟執行任意腳本,此處也會提示執行腳本。如果沒有權限執行腳本,可能需要先執行 Set-ExecutionPolicy Bypass。


接下來,運行命令以安裝 oh-my-posh 本身。
代碼語言:javascript代碼運行次數:0運行復制
Install-Module oh-my-posh -Scope CurrentUser


自此,oh-my-posh 安裝完畢。
啟用模組并設置主題
接下來,我們需要啟用安裝的模組。啟用模組的命令是:
代碼語言:javascript代碼運行次數:0運行復制
Import-Module oh-my-posh
但是,我們期望的是每次打開 PowerShell 都能夠啟用這個模組,所以我們需要設置 profile 文件讓它自動啟用。
敲 $profile 可以讓 PowerShell 告訴我們這個文件的路徑是什么。當然下圖是我的路徑,讀者的默認在文檔路徑里的 PowerShell 文件夾下。

我們需要編輯這個文件(如果沒有,手動創建一個),然后在里面寫下那一句話:
代碼語言:javascript代碼運行次數:0運行復制
Import-Module oh-my-posh
接下來,新打開 PowerShell(不需要管理員權限)時就會提示加載了這個文件:

其實寫本文主要就是想體驗 zsh 的操作,并看看 git 文件夾的視覺效果。現在我們就試試,輸入:
代碼語言:javascript代碼運行次數:0運行復制
Set-Theme
然后按一下空格,按一下 Tab。會發現這時已經可以用方向鍵來選擇參數了!原生 PowerShell 可沒有這個功能啊!

我們選擇 Agnoster 主題。(這些主題都是 oh-my-posh 帶給我們的。)
接下來我們看看 git 文件夾下的顯示:

并沒有 zsh 那樣的效果。——因為我們缺少專用的字體!
安裝字體/安裝第三方 PowerShell
!!!重要說明:給 PowerShell 定制字體是一件非常困難的事情,非常困難!!! 可參見 自定義 Windows PowerShell 和 cmd 的字體 感受一下。 所以,這里更傾向于在安裝了字體的情況下使用第三方 PowerShell。
比如下圖是我用 vscode 中帶的 PowerShell 的效果。

推薦的其他 PowerShell:
ConEmucmder – console Emulator
而適用于 oh-my-posh 的字體推薦使用 PowerLine 字體,他們專門為 zsh 這樣的體驗而生。官方文檔在這里 Overview — Powerline beta documentation。

▲ 官方文檔中的 PowerLine 字體截圖
官方字體的下載鏈接:powerline/fonts: Patched fonts for Powerline users.官方字體的看圖預覽:fonts/All.md at master · powerline/fonts
參考資料powerline/fonts: Patched fonts for Powerline users.Overview — Powerline beta documentation
本文會經常更新,請閱讀原文: https://walterlv.com/post/beautify-powershell-like-zsh.html ,以避免陳舊錯誤知識的誤導,同時有更好的閱讀體驗。
本作品采用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名 呂毅 (包含鏈接: https://walterlv.com ),不得用于商業目的,基于本文修改后的作品務必以相同的許可發布。如有任何疑問,請 與我聯系 (walter.lv@qq.com) 。