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

2023-10-23 14:04:07 浏览数 (2)

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


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

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

第零步:挑选一个终端

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

  • Windows Terminal (Windows 自带)
  • Fluent Terminal (流畅设计的终端)
  • ConEmu
  • cmder - Console Emulator

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

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

第一步:安装 Oh My Posh

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

代码语言:javascript复制
Install-Module oh-my-posh -Scope CurrentUser

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

第二步:启用 Oh My Posh

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

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

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

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

代码语言:javascript复制
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 里看到相同的效果:

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

  • ~DocumentsPowerShellModulesoh-my-posh<版本号>themes ▲ 如果你用的是 Windows PowerShell 而不是 PowerShell,可用 $PROFILE 查询一下跟目录

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

  • 下载 iterm3.omp.json

效果如下:


参考资料

  • Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher
  • powerline/fonts: Patched fonts for Powerline users.
  • Overview — Powerline beta documentation

0 人点赞