在 Windows PowerShell(pwsh)中配置 Oh My Posh + Conda 环境美化与性能优化
🧩 背景
我目前的开发环境是 Windows 11 + PowerShell 7.5.3(pwsh),主要做后端与前端开发(Go + Node.js + Electron)。
平常我在 Windows 上使用 PowerShell,而在 WSL2 中使用 Zsh。虽然 WSL2 环境功能强大,但启动和输入响应较慢,于是我更倾向在 PowerShell 下直接开发前端、后端,并用它启动 Conda、Node、Go 等项目。
为了让命令行更好看、功能更强(能显示 Git 分支、Node 版本、Conda 环境等),我使用了:
- 🧠 Oh My Posh:跨平台终端美化框架;
- 💄 主题:M365Princess;
- 💡 Conda:管理 Python 环境;
- ⚙️ pwsh 启动脚本(Profile):自定义启动行为与快捷命令。
💥 问题出现
在配置好 oh-my-posh
后,我希望能:
- 在提示符中显示当前的 conda 环境名称;
- 最好还能显示 Python 版本;
- 同时保持与主题的 彩色块拼接(Powerline)风格一致;
- 启动速度不要太慢。
但遇到的问题是:
- 默认的
python
段落模板完全没显示; - 网上大多数配置用
template
,但在我的oh-my-posh 27.1.0
版本里根本无效; - 只有我自己写的这一段才能正确显示:
json
{
"type": "python",
"style": "plain",
"foreground": "#98C379",
"properties": {
"display_virtual_env": true,
"dispplay_default": true,
"display_version": false,
"home_enabled": true,
"prefix": "\uE235 ",
"postfix": " ",
"display_mode": "always"
}
}
虽然能显示,但样式单调,不是我想要的 Powerline 拼接风格。
🔧 目标
✅ 我想要的效果是这样的:
- 提示符有彩色块;
- 显示当前 Conda 环境名(如
base 3.10.16
); - 与 Git、Node.js、时间等段落衔接自然。
🧰 解决方案
经过测试,我确认在 M365Princess
主题中,只要保持与原配置兼容的字段(properties
),就能让 Powerline 样式也正确渲染。
最终我采用了以下配置:
✅ 彩色块拼接的 Conda 段
json
{
"type": "python",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "p:teal",
"foreground": "p:white",
"properties": {
"display_virtual_env": true,
"display_version": true,
"display_mode": "always",
"prefix": "\uE235 ",
"postfix": " "
}
}
🔹 如果你只想显示环境名(去掉版本号),如下。
json
{
"type": "python",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "p:teal",
"foreground": "p:white",
"properties": {
"display_virtual_env": true,
"display_virtual_env_name_only": true, // 只显示 env 名
"display_version": false, // 不显示版本
"fetch_version": false, // 不去取版本(关键)
"display_mode": "always",
"prefix": "\uE235 ",
"postfix": " "
}
}
🧱 插入位置
在你的 M365Princess.omp.json
主题文件中,将这段插入在:
"git" 段后
"node" 段前
完整的区块示例:
json
{
"background": "p:salmon",
"foreground": "p:white",
"type": "git",
...
},
{
"type": "python",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"background": "p:teal",
"foreground": "p:white",
"properties": {
"display_virtual_env": true,
"display_version": true,
"display_mode": "always",
"prefix": "\uE235 ",
"postfix": " "
}
},
{
"background": "p:sky",
"foreground": "p:white",
"type": "node",
...
}
⚡ 效果展示
美化后,提示符如下:
ab-in electron-go-app ➜ (master) base 3.10.16 22.20.0 ♥ 19:31
或(仅环境名):
ab-in electron-go-app ➜ (master) base 22.20.0 ♥ 19:31
非常整洁,加载速度也很快。
🧩 其它优化
-
Conda 初始化
powershellconda init powershell
然后在
$PROFILE
中自动加载。 -
Oh My Posh 初始化
powershelloh-my-posh init pwsh --config ~/Posh/M365Princess.omp.json | Invoke-Expression
-
性能优化
- 不加载太多插件;
- 避免在
$PROFILE
里执行复杂脚本; - 使用 JSON 格式主题(比 YAML 加载更快)。
✅ 总结
模块 | 工具 / 设置 |
---|---|
终端 | PowerShell 7.5.3(pwsh) |
美化 | Oh My Posh 27.1.0 |
主题 | M365Princess |
Python 管理 | Conda |
关键功能 | Conda 环境名显示 + Powerline 拼接 |
关键段落 | "type": "python" Powerline 样式 |
优点 | 快速、美观、跨平台、一致性高 |
✨ 最终展示
完成后你的 PowerShell 主题可以同时展示:
- 用户名与路径
- Git 分支
- Conda 环境
- Node 版本
- 时间
整体如:
