在 Windows PowerShell(pwsh)中配置 Oh My Posh + Conda 环境美化与性能优化

在 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 后,我希望能:

  1. 在提示符中显示当前的 conda 环境名称
  2. 最好还能显示 Python 版本
  3. 同时保持与主题的 彩色块拼接(Powerline)风格一致
  4. 启动速度不要太慢。

但遇到的问题是:

  • 默认的 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 

非常整洁,加载速度也很快。


🧩 其它优化

  1. Conda 初始化

    powershell 复制代码
    conda init powershell

    然后在 $PROFILE 中自动加载。

  2. Oh My Posh 初始化

    powershell 复制代码
    oh-my-posh init pwsh --config ~/Posh/M365Princess.omp.json | Invoke-Expression
  3. 性能优化

    • 不加载太多插件;
    • 避免在 $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 版本
  • 时间
    整体如:

相关推荐
WTCLLB6 小时前
Win10,在ESP分区添加PE系统,隐藏VTOYEFI分区
windows·ventoy·bcd·wepe
原小明7 小时前
【Conda】Conda虚拟环境配置系统环境变量,Jupter可使用
vscode·python·jupyter·conda
2501_929382658 小时前
电视盒子助手开心电视助手 v8.0 删除电视内置软件 电视远程控制ADB去除电视广告
android·windows·adb·开源软件·电视盒子
CodeCraft Studio9 小时前
如何从 FastReport .NET 将报表导出为 JPEG / PNG / BMP / GIF / TIFF / EMF
windows·.net·报表开发·报表工具·fastreport·报表转图片
dengzhenyue10 小时前
超级玛丽demo9
windows
SHUIPING_YANG1 天前
完美迁移:将 nvm 和 npm 完全安装到 Windows D 盘
前端·windows·npm
m***记1 天前
Python 自动化办公的 10 大脚本
windows·python·自动化
漂亮_大男孩1 天前
conda|如何通过命令行在mac上下载conda
macos·conda
止观止1 天前
VS Code 二次开发:跨平台图标定制全攻略
linux·windows·vscode·macos