對於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
}