对于Oh Myposh来说,这是一个了不起的旅程,但是现在是时候提高了一个档次。如今,开发人员不再坚持使用一种外壳/语言,它们都是我们用来解决某个问题的工具。同样的需要适用于我的豪华。是时候适应这种哲学了。
这就是为什么这个版本的哦,我的豪华进入维护模式,而我努力将V3赶出了门。鉴于V3在引擎盖下完全不同,因此现在单独托管。从用户的角度来看,它应该提供相同的经验丰富的体验,并具有额外的优势,即自定义主题是头等舱,没有代码公民。
Install-Module oh - my - posh - Scope CurrentUser - AllowPrerelease还可以使用文档,这应该比过去几年具有更好的体验。
如果您是希望添加功能的开发人员,请查看V3,看看它是否已经存在。如果不是,请随时在V3上创建问题或PR,从现在开始,我只会接受V2上的错误修复。
PowerShell的主题引擎灵感来自Chris Benti对PS-Config的工作,OH-MY-ZSH在OSX和Linux上(因此名称)。
有关为什么我这样做的更多信息,可以在我的博客上找到。

特征:
您应该使用现代控制台主机,例如CONEMU,ALACRITTY,TERMINUS,HYPER,FLUENTTERMINAL或官方Windows终端,以在Windows上具有良好的终端体验。
从Microsoft Store,GitHub存储库或以下命令行方法中获取Windows终端的多种方法:
Via Winget(Windows的官方包装经理):
winget install -- id = Microsoft.WindowsTerminal - e通过巧克力:
choco install microsoft - windows - terminal通过scoop:
scoop install windows - terminal我使用的字体是Powerline字体,其中包含一个很棒的存储库。我在ConeMu设置中使用Meslo LG M Regular for Powerline Nerd Font并与自定义颜色一起使用。您可以在这里找到我的主题。
如果您在安装选择字体后注意到怪异的字形,请确保可以使用字形(也许它们在字体中具有不同的位置,如果是的话,请调整正确的$ThemeSettings图标)。如果事实证明您想要的字符不受支持,请选择其他字体。
您需要使用PowerShell画廊安装OH-MY POSH。
安装POSH-GIT和OH-MY POSH:
Install-Module posh - git - Scope CurrentUser
Install-Module oh - my - posh - Scope CurrentUser启用提示:
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster如果您在PS Core上运行此操作,请确保还安装PSReadLine的2.0.0-Beta1版本
Install-Module - Name PSReadLine - AllowPrerelease - Scope CurrentUser - Force - SkipPublisherCheck为了启用引擎编辑您的PowerShell配置文件:
if ( ! ( Test-Path - Path $PROFILE )) { New-Item - Type File - Path $PROFILE - Force }
notepad $PROFILE将以下行附加到您的PowerShell配置文件:
Import-Module posh - git
Import-Module oh - my - posh
Set-Theme Paradox最后一个命令为控制台设置主题。检查下面的可用主题列表。
列出当前配置:
$ThemeSettings 
您可以通过操纵$ThemeSettings来调整设置。此示例允许您使用Unicode字符调整分支符号:
$ThemeSettings .GitSymbols.BranchSymbol = [ char ]::ConvertFromUtf32( 0xE0A0 )另外,不要忘记POSH-GIT设置本身(例如,启用藏匿指示):
$GitPromptSettings当不在Agnoster,Fish,Honukai,Paradox和Sorin主题的虚拟机中时,请隐藏您的username@domain :
$DefaultUser = ' yourUsernameHere ' Set-Theme :从主题目录中设置主题。如果找不到匹配,它将不会更改。 AutoComplete可列出并完成可用的主题。
Set-Theme paradox Show-ThemeColors :显示主题使用的颜色

Show-Colors :显示在CONEMU中的颜色

















如果要创建一个主题,则可以通过在$ThemeSettings.MyThemesLocation中指示的文件夹中添加mytheme.psm1文件(文件夹默认为~DocumentsWindowsPowerShellPoshThemes ),可以随意更改它)。
唯一必需的功能是Write-Theme 。您可以使用以下模板开始:
# requires -Version 2 -Modules posh -git
function Write-Theme
{
param (
[ bool ]
$lastCommandFailed ,
[ string ]
$with
)
# enter your prompt building logic here
}
$sl = $ global :ThemeSettings # local settings随意使用公共助手功能Get-VCSStatus , Get-VcsInfo , Get-FormattedRootLocation , Get-ShortPath , Set-CursorForRightBlockWrite ,set-cursorup, Set-CursorUp , Set-Newline或完全添加自己的逻辑。
要测试CONEMU中的输出,只需切换到您的主题:
Set-Theme mytheme如果您想将您的主题包含在oh-my posh中,请给我发送PR,我会尽快给予反馈。
快乐的主题!
从主题中,使用PUSHD/POPD似乎是不可能的任务时,似乎可以使用Jonathan Leech-Pepin提出的解决方法。在您的$PROFILE中,添加一个变量,该变量将充当正确范围的指针以获取堆栈上下文:
$getStackContext = { Get-Location - Stack}接下来,在您的自定义主题中,访问要显示的信息:
$stackCount = ( & $getStackContext ).count这是由ConsoleTitle功能引起的。正如安德鲁·斯坦顿·纳尔斯(Andrew Stanton-Nurse)所解释的那样,它与终端如何使用OSC代码有关。修复程序是在ITERM2中通过将以下片段添加到您的$PROFILE时禁用ConsoleTitle功能。
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}