oh-my-posh 在Windows Terminal 中的正确食用方式

发布于 2020-08-22  138 次阅读


论如何在 Windows Terminal 的 PowerShell 中调教好 oh-my-posh.

oh-my-posh, 看名字就知道这是 oh-my-zsh 的 PS 版本. 这有什么用呢? (好看呀).

oh-mu-posh 的官网上对于配置讲得比较详细, 唯独没有提一些在 Windows Terminal 中会出现的问题. 踩了不少坑, 最后在 issue 中找到解了. 这里记录安装配置过程.

效果展示

首先来看一下我这里的最终效果图.

oh-my-posh in WT

安装

安装准备

在安装之前, 你首先需要这两样东西:

  • ConEmu
  • 任何支持 Powerline 的字体

ComEmu 有很多方式安装, 这里我通过 scoop

scoop bucket add extras
scoop install conemu

支持 Powerline 的字体也很多, 比如 oh-my-posh 的 GitHub 页面就提供了一个包含超多 Nerd Fonts 的仓库. 这里使用微软提供的字体 Cascadia Code, 该字体是 Windows Terminal 默认字体的扩展. 如果没做过字体修改的话, 这个看起来会合原本的字体相同, 保持视觉上的一致. 下载该字体文件, 可以选择全部安装, 也可以部分安装. 但至少需要保证带 PL 后缀的字体安装了至少一个.

正式安装

首先安装程序本体

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

按照 oh-my-posh 文档的说法, 对于 PS-Core 用户, 还需要安装一个较高版本号的预览版 PSReadLine 以取代内置的旧版模块. 我查看了版本号貌似内置的比文档页面说的那个 beta version 还要高. 因此并不是很确定该步骤是否必要(但我还是执行了这个命令装了一个预览版的).

Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force

安装后配置

首先需要修改一下 PowerShell 的 Profile.

你需要在 profile 中设置这样几行. Profile 可以通过 PowerShell 的环境变量 $PROFILE 找到. 使用任何文本编辑器打开该文件然后添加下述几行. 这几行的作用分别是: 隐藏那个超巨大的 user@domain, 启动时导入模块, 设置主题. 主题倒是可以选择别的啦, 不过有的主题那么多 emoji 真的难看死了.

$DefaultUser = $env:USERNAME
Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

接下来需要稍微修改下 Windows Terminal 的设置, 让其使用正确的字体. 找到某个配置项目(例如这里的是 PowerShell Core 的配置项目). 添加 "fontFace": "Cascadia Code PL". 这个字体换成你电脑上安装的任何一个支持 Powerline 的字体均可.

{
	"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
	"hidden": false,
	"name": "PowerShell",
	"source": "Windows.Terminal.PowershellCore",
	"useAcrylic": true,
	"acrylicOpacity": 0.75,
	"colorScheme": "One Half Light",
	"cursorColor": "#000000",
	"historySize": 20001,
	"fontFace": "Cascadia Code PL"
}

此外, 如果需要在 VS Code 中正确使用, 也需要配置字体. 在 VSC 的设置中找到 Terminal Font Family, 修改相应字体, 如下图.


终有一日, 仰望星空