跳转到主内容

新功能速递 #3

· 1 分钟阅读
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

再会了,老朋友!

PowerShell 模块

最初,我们只有 PowerShell 模块。它是 Oh My Posh 的起源, 即使迁移到 Go 语言后也一直可用。但随着发展,它的优势已大幅减弱, 甚至还引入了额外障碍

自三月起,该模块不再提供新功能并会显示警告信息。请查看迁移指南, 了解如何从模块迁移到其他安装方式,整个过程只需一分钟。

抽奖活动

几周前我启动了抽奖活动庆祝 Oh My Posh 六周年。但随后我去度假了, 没来得及公布获奖者。闲话少说,恭喜 @samerde 被在线随机抽选器选中获奖!

功能更新

久等了,请坐稳扶好 😅

PowerShell UTF-8

早期因字体和路径问题,Oh My Posh 会强制设置 PowerShell 为 UTF-8 编码。 后来发现这并非必要。新的调用方式移除了全局设置需求, 避免了副作用。但当你的 --config 路径包含非 ASCII 字符时仍可能出问题—— 世事难两全啊!遇到这种情况,请在初始化 Oh My Posh 时设置 UTF-8 编码。

$previousOutputEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [Text.Encoding]::UTF8
try {
oh-my-posh init pwsh --config ~/custom.omp.json | Invoke-Expression
} finally {
[Console]::OutputEncoding = $previousOutputEncoding
}

Nu shell

如果你还没见过 Nu shell,这是位新秀。Oh My Posh 现已支持它, 就像支持其他主流 shell(bash/zsh/fish 等)一样。这意味着新增功能时, 用户只需更新 Oh My Posh 即可,无需额外操作。

Accordion

想让 powerline 段落在禁用时折叠显示?现在可以了! 使用 accordion 样式即可实现可折叠状态。

可折叠提示符效果

项目检测

功能持续扩展中。project 段落现在支持以下项目类型:

Shell 版本

多版本 shell 用户的福音!现在可通过 shell 段落的 .Version 属性区分版本:

"template": " in {{ .Name }} {{ .Version }} "

Git 优化

git 段落新增技巧帮你提速。之前我们强制将未跟踪文件模式设为 normal, 但在大型仓库中效率低下。现在你可以按仓库覆盖此设置

"untracked_modes": {
"/Users/user/Projects/oh-my-posh/": "no"
}

可用选项详见 git 文档,请按需取用!

跨段落模板属性

等等,什么?没错,你没看错。Oh My Posh 现在支持跨segment模板属性。 这意味着你可以在一个segment的模板中使用另一个segment的属性。如何实现?Oh My Posh 提供了 .Segments 属性,其中包含所有segment属性的映射表。要使用其他segment的数据, 只需在模板中使用 {{ .Segments.Segment }} 语法,其中 .Segment 是你想引用的segment名称(首字母大写)。

例如,若想在 exit segment 中使用 git segment 的 .UpstreamGone 属性, 可以这样配置:

"template": " {{ if .Segments.Git.UpstreamGone }}\uf7d3{{ else if gt .Code 0 }}\uf00d{{ else }}\uf00c{{ end }} "
注意

此功能要求被引用的段落必须存在于配置中。若配置未包含 git 段落, 上例将失效,因为 Oh My Posh 仅在需要时填充属性。

其他更新

  • oh-my-posh debug 现在能准确测量运行时间并记录启动逻辑

  • 语言类segment现在可区分文件和文件夹

  • python segment 新增支持 pyenv 的 .python-version 文件

  • init 命令新增 --strict 参数,不再解析可执行文件路径

  • battery segment 现在能显示 macOS 所有相关电量状态

  • dotnet segment 新增支持 .slnf 解决方案筛选器文件

  • 新增 iterm segment 用于显示 iTerm shell 集成的提示标记

  • memory segment 现在可显示可用内存量

  • path segment 新增 .Writable 属性,标识当前用户 是否拥有当前文件夹的写入权限

问题修复

  • git segment 现可处理使用 --separate-git-dir 的仓库

  • 超链接长度测量修复(确保右对齐提示符正确显示)

  • 提示符转义序列正确转义(避免意外视觉异常)

  • Spotify 在非英语 Windows 系统上运行正常

  • Windows 并行逻辑崩溃问题修复

  • git 上游消失状态逻辑修复

  • PowerShell 中 PSReadLine 现在接收正确的提示行数(Set-PSReadlineOption -ExtraPromptLineCount), 修复使用瞬态提示符时因多行提示符导致的异常行为

  • winget 安装程序现在能正确添加 PATH 项(与安装模式无关)

本次更新就到这里,下次再见 🤞🏻

各位,让提示符保持优雅吧!