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

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

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


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


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

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

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

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

并沒有 zsh 那樣的效果。——因為我們?nèi)鄙賹S玫淖煮w!
安裝字體/安裝第三方 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.官方字體的看圖預(yù)覽:fonts/All.md at master · powerline/fonts
參考資料powerline/fonts: Patched fonts for Powerline users.Overview — Powerline beta documentation
本文會經(jīng)常更新,請閱讀原文: https://walterlv.com/post/beautify-powershell-like-zsh.html ,以避免陳舊錯誤知識的誤導(dǎo),同時有更好的閱讀體驗。
本作品采用 知識共享署名-非商業(yè)性使用-相同方式共享 4.0 國際許可協(xié)議 進(jìn)行許可。歡迎轉(zhuǎn)載、使用、重新發(fā)布,但務(wù)必保留文章署名 呂毅 (包含鏈接: https://walterlv.com ),不得用于商業(yè)目的,基于本文修改后的作品務(wù)必以相同的許可發(fā)布。如有任何疑問,請 與我聯(lián)系 (walter.lv@qq.com) 。