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

相关推荐
ShineSpark2 小时前
Crashpad 在windows下编译和使用指南
c++·windows
炮院李教员4 小时前
TortoiseSVN 右键不显示的解决方法
windows
竹竹零4 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
catoop5 小时前
在 Windows 中基于 WSL 子系统 Ubuntu 安装配置 conda 示例
windows·ubuntu·conda
张人玉7 小时前
C#串口通讯助手
windows
初圣魔门首席弟子7 小时前
C++ STL list 容器学习笔记:双向链表的 “小火车“ 操控指南
c++·windows·笔记·学习
David.K9 小时前
记录:win10环境手动编译tcl源码过程
windows·环境·win10·tcl·tcl环境搭建
kyle~10 小时前
机器视觉---Intel RealSense SDK 2.0 开发流程
运维·c++·windows·深度相机·intel realsense
豆沙粽子好吃嘛!11 小时前
windows环境下g++无输出的解决方案
windows
一叶龙洲11 小时前
安装Win11+Ubuntu25.10双系统遇到的问题
windows·ubuntu