Oh-my-posh 主题无法与 Powerline 字体和 ConEmu 一起正常工作

Oh-my-posh themes not working correctly with Powerline font and ConEmu

我在 Windows 上使用 PowerShell 作为我的 shell 7. 我发现 ConEmu 是一个非常好的终端。因为我不在 Windows 10 上,所以我不能使用 Windows 终端,但 ConEmu 一点也不差。我了解了 posh-git 和 oh-my-posh 以及它们如何自定义您的 PowerShell 体验。我安装了 oh-my-posh,Paradox 主题看起来不错。但是我在我的提示中随机看到了一些空盒子。

这是我在所有主题上都面临的问题。颜色和设计都很漂亮,我想使用它,但那些奇怪的盒子让我无法使用它。我还想告诉我,我正在使用 Cascadia Code 作为我的字体,这也是 Cascadia Code 的电力线版本。所以,我认为它应该按例外情况工作。接下来,为了解决这个问题,我去了 nerdfont.com 并从那里安装了 Cascadia 代码,而不是 Microsoft 的官方 GitHub 存储库。然后我将 ConEmu 的字体设置为我从 nerdfonts 安装的 Cascadia,这发生了:

在某种程度上更好,我可以看到 Python 符号和更多符号,但仍然有一个框无法呈现。但如果我更改存储库,情况确实会变得更糟:

"master"后面有个奇怪的问号。我想我已经满足了使用 oh-my-posh 的所有先决条件,比如安装 posh-git 和 PSReadLine 并拥有 powerline Cascadia Code 字体,还按照他们的官方建议使用 ConEmu。如果有人能帮助我摆脱困境并建议如何修复我的提示,我将非常感激。

P.S 我正在使用 PowerShell 7 Core。

当您看到方框时,表示该字体没有指定的字符。例如有很多专用字体没有定义每个字符位置。

就在 oh-my-posh GitHub 页面上,引用:

In case you notice weird glyphs after installing a font of choice, make sure the glyphs are available (maybe they have a different location in the font, if so, adjust the correct $ThemeSettings icon). If it turns out the character you want is not supported, select a different font.

同样在oh-my-posh GitHub页面,使用的字体是:

The fonts I use are Powerline fonts, there is a great repository containing them. I use Meslo LG M Regular for Powerline Nerd Font

如果使用 Meslo LG M Regular 不能解决您的问题,那么您必须手动将图标重新映射到所选字体的正确 unicode 位置。

Version 2 of Oh My Posh, you have to edit the $ThemeSettings variable. Follow the instructions on the GitHub on configuring Theme Settings。例如:

$ThemeSettings.GitSymbols.BranchSymbol = [char]::ConvertFromUtf32(0xE0A0) 

对于 Oh My Posh 的版本 3+,您必须编辑 JSON configuration 文件以进行更改,例如:

...
{
    "type": "git",
    "style": "powerline",
    "powerline_symbol": "\uE0B0",
....

我遇到了同样的问题,安装字体就解决了。

  1. https://github.com/microsoft/cascadia-code/releases
  2. 下载字体
  3. 解压缩
  4. 右键单击字体并select“为所有用户安装字体
  5. 尽情享受吧!

发件人:https://github.com/microsoft/cascadia-code

我遇到了同样的问题并通过编辑以下文件解决了这个问题:C:\Path\To\Your\WindowsPowerShell\Modules\oh-my-posh.0.496\defaults.ps1

PromptSymbols 中,应该有一个叫做 VirtualEnvSymbol 的东西。只需将当前值更改为上面列出的值即可。例如,

VirtualEnvSymbol = [char]::ConvertFromUtf32(0x26A1)

发布此回复是因为我遵循了@HAL9256 的回复,它非常有帮助,但我不得不更进一步。如果您使用 windows 终端,您实际上必须将终端设置为使用 nerd 字体。这花了我太长时间才弄清楚所以希望它能帮助下一个人。

在 windows 终端中,打开设置,然后在左侧的默认值,然后是外观选项卡,最后将字体更改为书呆子字体

https://www.jondjones.com/media/rhzobluq/customise-your-powershell-prompt-like-a-boss-c.gif

来源:https://www.jondjones.com/tactics/productivity/customise-your-powershell-prompt-like-a-boss/

只需安装整个 Cascadia 代码字体,无需修改主题设置即可使用。

https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/CascadiaCode/Regular/complete