将美化进行到底,使用 Oh My Posh 把 PowerShell 做成 oh-my-zsh 的样子
不知你有没有看过 Linux 上 oh-my-zsh 的样子?看过之后你一定会惊叹,原来命令行还能这么玩!然而 Windows 下能这么玩吗?答案是可行的,接下来就来看看怎么玩。
Windows 下我们用 Oh My Posh 在 PowerShell 中实现这样的效果。先放一张我的美化效果图:
接下来,我们用三个步骤完成这样的美化。
第零步:挑选一个终端
鉴于无论是 PowerShell (Windows) 还是 PowerShell (Core) 都无法直接获得本文所述的效果,所以强烈建议在开始之前准备一个专门的终端,比如:
- Windows Terminal (Windows 自带)
- Fluent Terminal (流畅设计的终端)
无论你选了哪一个,当你设置好后,会在所有终端中生效,包括 Visual Studio、Visual Studio Code 中内嵌的终端。
另外,如果你从来没有在你的电脑上折腾过终端,那么可能还需要额外去应用商店安装一下 PowerShell 的 .NET 版本(不装的话,默认是 Windows PowerShell,版本会旧一些):
第一步:安装 Oh My Posh
先启动你主用的终端(本文将以 Windows Terminal 为例),然后输入如下安装命令:
Install-Module oh-my-posh -Scope CurrentUser
如果中途提示是否允许安装,输入 Y
继续就好了。
第二步:启用 Oh My Posh
在安装完后,输入并执行 Get-PoshThemes
命令便可以浏览 Oh My Posh 自带的几十款主题(同时也能验证装好了)。只可惜你会发现主题里有大量的“□□”字,这个我们在第三步里会推荐一些字体供你挑选。
还需要做一件重要的事情,我们要让每次新启动 PowerShell 时都自动启用此模组,否则等你下次打开终端时就没有任何效果了。
输入 $PROFILE
查询你的 PowerShell Profile 文件位置:
去对应的文件夹找一下这个文件(Microsoft.PowerShell_profile.ps1)。如果你没有这个文件,就新建一个,文件里面编写如下内容:
Import-Module oh-my-posh
Set-PoshPrompt agnoster
这里的 agnoster
是刚刚 Get-PoshThemes
主题列表里的第一个。因为我们还没有装好字体,现在格式混乱,所以也很难挑选真正喜爱的主题。
至此,Oh My Posh 模组已经可以在每次启动 PowerShell 时自动加载了。
第三步:安装字体、挑选主题
关于字体,小提一下:如果你直接使用 PowerShell 而不使用终端的话,字体的定制会非常麻烦,可参见 自定义 Windows PowerShell 和 cmd 的字体 感受一下。所以还是需要强调一下本文开头的部分,建议选一款终端操作以较少调试上的痛苦。
字体可以在这些地方挑选:
- Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
▲ 推荐,支持 Oh My Posh 需要的各种图标 - powerline/fonts: Patched fonts for Powerline users.
▲ 基本能呈现 PowerLine 效果,但图标较少,可选的主题较少
对于 Nerd Fonts,去网站上挑选一款字体,点击“Download”下载、解压、右键全选安装即可,就像安装其他任何字体一样。对于 PowerLine Fonts,克隆仓库,找到 Install.ps1 文件并执行它即可安装。
这里,我选了 Nerd Fonts 系的 Fira Code NF 字体,直接安装。接着,去终端里面为 PowerShell 选择刚安装好的字体,点击保存。(如果终端里看不到新安装的字体,请重启终端。)
接下来就是见证奇迹的时刻——新启动一个终端:
重新输入 Get-PoshThemes
再预览主题,然后挑选一个。挑好后,去修改 Microsoft.PowerShell_profile.ps1 文件内容,换主题名。
这里,我选了 iterm2
,于是就有了本文一开始的美化效果了:
同样,在 Visual Studio Code 里设置一下终端字体也可以在 Visual Studio Code 里看到相同的效果:
主题在这个文件夹下,可以自行编辑:
~\Documents\PowerShell\Modules\oh-my-posh\<版本号>\themes
▲ 如果你用的是 Windows PowerShell 而不是 PowerShell,可用$PROFILE
查询一下跟目录
参考资料
- Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
- powerline/fonts: Patched fonts for Powerline users.
- Overview — Powerline beta documentation
我的博客会首发于 https://blog.walterlv.com/,而博客园会从其中精选发布,但是一旦发布了就很少更新。
如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。