在 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 版本
  • 时间
    整体如:

相关推荐
YCOSA20252 小时前
雨晨 Windows 10 企业版 LTSC x64 中度精简 1809 迎双节 17763.9257 特别版
windows
sukalot3 小时前
windows 驱动实例分析系列: HidHide 驱动分析 - drivers 篇(四)
windows·驱动开发
Blockbuater_drug3 小时前
Protenix: conda 环境部署、零基础安装
conda·开源模型·字节跳动·v2·蛋白结构预测·protenix
ι:8 小时前
NUC12 Pro 安装 Ubuntu 24.04 LTS 详细教程
linux·windows·ubuntu·nuc
YCOSA20258 小时前
微软宣布将于10月7日举行Windows与Surface发布会,聚焦“Windows、NVIDIA RTX Spark、Surface,以及更广泛PC生态”
windows
Source.Liu9 小时前
【A11】 labelprinter(Tauri 版)新建步骤
windows·rust
Punchline27810 小时前
解决 Windows 环境变量 Path 设置时提示“字符太长”的完整指南
windows·环境变量·path
chushiyunen11 小时前
claude code笔记(二)、claude桌面端(内网不好用)
windows
d_benhua11 小时前
以太网测试步骤
windows
冯一川11 小时前
DeepSeek在Windows系统上部署
windows·python