在 Windows 中为 PowerShell 配置 Oh My Posh
前言
使用 Windows 的时候我们或多或少会接触到 CMD 或 (Windows) PowerShell 等命令行工具,使用命令行工具时难免会觉得单调,这时就可以给 (Windows) PowerShell 配置 Oh My Posh 以美化,使其使用更加顺手及美观
准备工具
可选,(Windows 11 及更高版本自带):
Windows Terminal(最低支持 Windows 10 19041,即 Windows 10 2004。老版本最低支持到 Windows 10 17763,即 Windows 10 1809)可选:
PowerShell,推荐使用 MSI 包安装
扩展阅读:Windows PowerShell 5.1 和 PowerShell 7.x 之间的差异 - Microsoft Learn
Oh My Posh支持 Windows PowerShell 和 PowerShell,你可以选择只在 Windows PowerShell 中配置Oh My Posh
推荐选择install-arm64.msi(ARM64)或install-x64.msi(64 位),
推荐选择install-arm64.msix(ARM64)或install-x64.msix(64 位)若你不知道你的 Windows 架构,请参阅:检查 CPU 与 Windows 的架构
Nerd Fonts
官方推荐使用 MesloLG Nerd Font,选择Meslo.tar.xz或Meslo.zip下载,将其解压后安装即可(Melso.tar.xz最小)
我使用的主题为powerlevel10k_rainbow,故安装的是MesloLGMNerdFontMono-Regular.ttf关于字体的选择
以下为 Gemini 3.8 Flash Low 对于
Meslo.tar.xz下字体的解释- 基础尺寸与行高(LG 后面的字母:S / M / L)
代表 Line Gap(行距/行高):- LGS (Small):紧凑行距,行间距最小,单屏能显示的代码行数最多。
- LGM (Medium):中等行距,平衡型。
- LGL (Large):宽松行距,行间距最大,呼吸感更强。
- 数字 0 的显示样式(是否带 DZ)
- 无 DZ:数字 0 内部是斜杠(Slashed Zero: 0̸)。
- 带 DZ (Dotted Zero):数字 0 内部是实心圆点(0̇),便于与字母 O 区分。
- 图标与字宽策略((无) vs Mono vs Propo)
Nerd Font 引入了几千个特殊开发图标(Git、Docker、文件夹等),这三者决定了这些图标的宽度占用:后缀 图标占用宽度 适用场景 无后缀 (标准版,如 MesloLGS Nerd Font) 双倍字宽 (2格) 最推荐日常使用(Terminal、VS Code 等主流环境完美兼容,图标大且清晰)。 Mono (如 MesloLGS Nerd Font Mono) 严格单倍字宽 (1格) 适用于某些强制要求所有字符必须严格等宽、否则图标会乱码或重叠的老旧终端。缺点是部分复杂图标压缩后偏小。 Propo (如 MesloLGS Nerd Font Propo) 比例宽度 (不定宽) 仅适合纯文本编辑器、聊天或 UI 界面,不适合严苛对齐的终端命令行。 - 字重与斜体
- Regular:常规体
- Bold:粗体
- Italic:斜体
- BoldItalic:粗斜体
- 选择建议
VS Code / Windows Terminal / iTerm2 等主流终端:直接选择 MesloLGS Nerd Font(或习惯大行距选 LGM / LGL)。
喜欢点状 0 而非斜杠 0:选择带 DZ 的版本(如 MesloLGSDZ Nerd Font)。
使用 Oh My Posh / Powerlevel10k (p10k):官方通常推荐直接安装 MesloLGS Nerd Font。
- 基础尺寸与行高(LG 后面的字母:S / M / L)
安装并配置
仅 .MSI 安装需要配置环境变量,.MSIX 安装不需要配置环境变量
MSI 安装程序配置环境变量
安装完成 Oh My Posh 后,按下 WIN + R 以打开“运行”,输入 %LocalAppData%\Programs\oh-my-posh\bin 后按下 Enter 以回车,在打开的文件资源管理器窗口中右键顶部的地址栏,并选择“复制地址”

再次按下 WIN + R 以打开“运行”,输入 SystemPropertiesAdvanced.exe 后按下 Enter 以回车来打开“高级系统设置”
点击右下角的“环境变量(N)…”,在“系统变量(S)”中找到 Path 的变量,并点击“编辑(I)…”,点击右边的“新建(N)”,将复制的 Oh My Posh 安装路径粘贴进去

初始化
推荐使用自动寻找主题文件路径的方案
在(Windows)PowerShell 中输入代码以创建配置文件
1 | notepad.exe $PROFILE |
如果没有此文件,则通过命令手动创建
1 | New-Item -Path $PROFILE -Type File -Force |
在打开空白的配置文件后,将以下代码内容粘贴并保存
自动寻找主题文件路径(推荐):
1 | oh-my-posh.exe init pwsh --config "jandedobbeleer" | Invoke-Expression |
带有指定的主题文件路径:
1 | oh-my-posh.exe init pwsh --config "$Env:POSH_THEMES_PATH/jandedobbeleer.omp.json" | Invoke-Expression |
若是 Windows PowerShell
自动寻找主题文件路径(推荐):
1 | oh-my-posh.exe init powershell --config "jandedobbeleer" | Invoke-Expression |
带有指定的主题文件路径:
1 | oh-my-posh.exe init powershell --config "$Env:POSH_THEMES_PATH/jandedobbeleer.omp.json" | Invoke-Expression |
- Windows PowerShell 的配置文件将会存储在:
%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 - PowerShell 的配置文件将会存储在:
%UserProfile%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 - 主题配置储存在:
$Env:POSH_THEMES_PATH,即%LocalAppData%\Programs\oh-my-posh\themes,即C:\Users\<用户名>\AppData\Local\Programs\oh-my-posh\themes
完成后输入命令或重启终端/(Windows)PowerShell 以应用主题
1 | . $PROFILE |
美化
更换主题
若没有正确存放主题文件,则会提示 CONFIG NOT FOUND。使用 .MSI 安装的 Oh My Posh 会将主题存放在 %LocalAppData%\Programs\oh-my-posh\themes 下,使用 .MSIX 安装的 Oh My Posh 则弃用了这个特性,在配置文件中使用 --config "<主题名称>" 即可,此方法同样适用于 .MSI[3]
从官网查看主题:https://ohmyposh.dev/docs/themes
从终端查看主题:Get-PoshThemes
打开配置文件,并替换其中的 jandedobbeleer 字段
例如我更换主题为 powerlevel10k_rainbow,那么配置文件的代码是这样
自动寻找主题文件路径(推荐):
1 | oh-my-posh.exe init pwsh --config "powerlevel10k_rainbow" | Invoke-Expression |
带有指定的主题文件路径:
1 | oh-my-posh.exe init pwsh --config "$Env:POSH_THEMES_PATH/powerlevel10k_rainbow.omp.json" | Invoke-Expression |
若是 Windows PowerShell
自动寻找主题文件路径(推荐):
1 | oh-my-posh.exe init powershell --config "powerlevel10k_rainbow" | Invoke-Expression |
带有指定的主题文件路径:
1 | oh-my-posh.exe init powershell --config "$Env:POSH_THEMES_PATH/powerlevel10k_rainbow.omp.json" | Invoke-Expression |
更换字体
Windows 终端
在终端中打开“设置” > “配置文件” > “默认值”(或 Windows PowerShell,或 PowerShell,“默认值”为全局) > “外观” > “字体”
将字体设置为 MesloLGM Nerd Font Mono 并保存,使用多个字体时用逗号(,)隔开,如 MesloLGM Nerd Font Mono, Cascadia Mono
推荐将 MesloLGM Nerd Font Mono 设为首个字体,避免图标被其他字体所覆盖,但是会导致 Windows 终端默认启动窗口偏大

VS Code
在 VS Code 中,按下 CTRL + ,,在“设置”顶部的搜索框中,输入 terminal.integrated.fontFamily
将字体设置为 'MesloLGM Nerd Font Mono' 并保存,使用多个字体时用逗号(,)隔开,含有空格的字体要用单引号包裹(''),如 'MesloLGM Nerd Font Mono', 'Cascadia Mono', monospace
推荐将 MesloLGM Nerd Font Mono 设为首个字体,避免图标被其他字体所覆盖

后记
最终效果

.MSI 的方式安装的应该不限制 Windows 的版本,或许 Windows 7 都能用(?)
自 Windows 10 版本 1709 起,Windows 才支持 .MSIX,早于 Windows 10 版本 1709 的 Windows,请参阅:MSIX 核心 - MSIX | Microsoft Learn
对于 Windows 7/8/8.1,建议尝试更新 Windows PowerShell 版本,请参阅:升级 Windows PowerShell 版本