将美化进行到底,使用 Oh My Posh 把 PowerShell 做成 oh-my-zsh 的样子

不知你有没有看过 Linux 上 oh-my-zsh 的样子?看过之后你一定会惊叹,原来命令行还能这么玩!然而 Windows 下能这么玩吗?答案是可行的,接下来就来看看怎么玩。


Windows 下我们用 Oh My Posh 在 PowerShell 中实现这样的效果。先放一张我的美化效果图:

美化效果

接下来,我们用三个步骤完成这样的美化。

第零步:挑选一个终端

鉴于无论是 PowerShell (Windows) 还是 PowerShell (Core) 都无法直接获得本文所述的效果,所以强烈建议在开始之前准备一个专门的终端,比如:

无论你选了哪一个,当你设置好后,会在所有终端中生效,包括 Visual Studio、Visual Studio Code 中内嵌的终端。

另外,如果你从来没有在你的电脑上折腾过终端,那么可能还需要额外去应用商店安装一下 PowerShell 的 .NET 版本(不装的话,默认是 Windows PowerShell,版本会旧一些):

应用商店中的 PowerShell

第一步:安装 Oh My Posh

先启动你主用的终端(本文将以 Windows Terminal 为例),然后输入如下安装命令:

Install-Module oh-my-posh -Scope CurrentUser

安装 Oh My Posh

如果中途提示是否允许安装,输入 Y 继续就好了。

第二步:启用 Oh My Posh

在安装完后,输入并执行 Get-PoshThemes 命令便可以浏览 Oh My Posh 自带的几十款主题(同时也能验证装好了)。只可惜你会发现主题里有大量的“□□”字,这个我们在第三步里会推荐一些字体供你挑选。

确认已安装

还需要做一件重要的事情,我们要让每次新启动 PowerShell 时都自动启用此模组,否则等你下次打开终端时就没有任何效果了。

输入 $PROFILE 查询你的 PowerShell Profile 文件位置:

寻找 PowerShell Proile 文件

去对应的文件夹找一下这个文件(Microsoft.PowerShell_profile.ps1)。如果你没有这个文件,就新建一个,文件里面编写如下内容:

Import-Module oh-my-posh
Set-PoshPrompt agnoster

这里的 agnoster 是刚刚 Get-PoshThemes 主题列表里的第一个。因为我们还没有装好字体,现在格式混乱,所以也很难挑选真正喜爱的主题。

至此,Oh My Posh 模组已经可以在每次启动 PowerShell 时自动加载了。

自动加载了 Oh My Posh 模组

第三步:安装字体、挑选主题

关于字体,小提一下:如果你直接使用 PowerShell 而不使用终端的话,字体的定制会非常麻烦,可参见 自定义 Windows PowerShell 和 cmd 的字体 感受一下。所以还是需要强调一下本文开头的部分,建议选一款终端操作以较少调试上的痛苦。

字体可以在这些地方挑选:

对于 Nerd Fonts,去网站上挑选一款字体,点击“Download”下载、解压、右键全选安装即可,就像安装其他任何字体一样。对于 PowerLine Fonts,克隆仓库,找到 Install.ps1 文件并执行它即可安装。

这里,我选了 Nerd Fonts 系的 Fira Code NF 字体,直接安装。接着,去终端里面为 PowerShell 选择刚安装好的字体,点击保存。(如果终端里看不到新安装的字体,请重启终端。)

选择字体

接下来就是见证奇迹的时刻——新启动一个终端:

更换了 Fira Code NF 字体后新启动的终端

重新输入 Get-PoshThemes 再预览主题,然后挑选一个。挑好后,去修改 Microsoft.PowerShell_profile.ps1 文件内容,换主题名。

挑选主题

这里,我选了 iterm2,于是就有了本文一开始的美化效果了。同样,在 Visual Studio Code 里设置一下终端字体也可以在 Visual Studio Code 里看到相同的效果:

在 Visual Studio Code 里的效果

主题在这个文件夹下,可以自行编辑:

S0cialEngineering - 灰色铅笔的彩色世界。 基于自带的 iterm2 魔改了一个 iterm3 主题,他授权我在这里分流提供给大家下载。我觉得非常好看,就白瞟了。

效果如下:

iterm3.omp.json 效果


参考资料

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/beautify-powershell-like-zsh.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,或者前往 CSDN 关注我的主页

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])