Es war eine erstaunliche Fahrt für Oh Myposh, aber es ist an der Zeit gekommen, es zu einem Stieg zu bringen. Entwickler halten heutzutage nicht mehr an einer Shell/einer Sprache, sondern sind alle Werkzeuge, mit denen wir ein bestimmtes Problem lösen. Das gleiche muss sich für oh, mein Posh, gelten. Es ist Zeit, sich an diese Philosophie anzupassen.
Deshalb tritt diese Version von Oh My Posh in den Wartungsmodus ein, während ich hart daran arbeite, V3 aus der Tür zu holen. Angesichts der Tatsache, dass V3 unter der Motorhaube völlig anders ist, wird es vorerst separat gehostet. Aus Sicht der Benutzer sollte es die gleiche Erfahrung außerhalb des Boxs bieten, mit dem zusätzlichen Vorteil, dass benutzerdefinierte Themen eine erste Klasse sind, kein Code-Bürger.
Install-Module oh - my - posh - Scope CurrentUser - AllowPrereleaseEs ist auch eine Dokumentation verfügbar, die eine bessere Erfahrung bieten sollte als diese Readme in den letzten Jahren :-)
Wenn Sie ein Entwickler sind, der Funktionen hinzufügen möchte, sehen Sie sich bitte einen Blick auf V3, um festzustellen, ob es dort bereits vorhanden ist. Wenn nicht, zögern Sie nicht, ein Problem oder eine PR auf V3 zu erstellen. Ich werde von nun an nur Fehlerbehebungen auf V2 akzeptieren .
Eine Themenmotor für PowerShell, inspiriert von der Arbeit von Chris Benti auf PS-Config und Oh-My-Zsh unter OSX und Linux (daher der Name).
Weitere Informationen darüber, warum ich dies gemacht habe, finden Sie in meinem Blog.

Merkmale:
Sie sollten einen modernen Konsolen -Host wie Conemu, Alacritty, Terminus, Hyper, Fluentterminal oder das offizielle Windows -Terminal verwenden, um ein großes Terminalerlebnis unter Windows zu haben.
Es gibt mehrere Möglichkeiten, Windows Terminal zu erwerben - aus dem Microsoft Store, dem Github Repo oder den folgenden Befehlszeilenmethoden:
Über Winget (offizieller Paketmanager für Windows):
winget install -- id = Microsoft.WindowsTerminal - eÜber schokoladig:
choco install microsoft - windows - terminalVia Scoop:
scoop install windows - terminal Die von mir verwendeten Schriftarten sind Powerline -Schriftarten, es gibt ein großartiges Repository, das sie enthält. Ich verwende Meslo LG M Regular for Powerline Nerd Font in meinem Conemu -Setup zusammen mit benutzerdefinierten Farben. Hier finden Sie mein Thema.
Wenn Sie nach der Installation einer Schriftart der Wahl seltsame Glyphen bemerken, stellen Sie sicher, dass die Glyphen verfügbar sind (möglicherweise haben sie einen anderen Ort in der Schriftart, wenn ja, das richtige $ThemeSettings -Symbol anpassen). Wenn sich herausstellt, dass der gewünschte Charakter nicht unterstützt wird, wählen Sie eine andere Schriftart.
Sie müssen die PowerShell-Galerie verwenden, um Oh-my-Posh zu installieren.
Installieren Sie Posh-Git und Oh-My-Posh:
Install-Module posh - git - Scope CurrentUser
Install-Module oh - my - posh - Scope CurrentUserAktivieren Sie die Eingabeaufforderung:
# Start the default settings
Set-Prompt
# Alternatively set the desired theme:
Set-Theme Agnoster Wenn Sie dies auf PS Core ausführen, sollten Sie auch die Version 2.0.0-beta1 von PSReadLine installieren
Install-Module - Name PSReadLine - AllowPrerelease - Scope CurrentUser - Force - SkipPublisherCheckDamit das Motor Ihr PowerShell -Profil bearbeiten kann:
if ( ! ( Test-Path - Path $PROFILE )) { New-Item - Type File - Path $PROFILE - Force }
notepad $PROFILEFügen Sie die folgenden Zeilen an Ihr PowerShell -Profil hinzu:
Import-Module posh - git
Import-Module oh - my - posh
Set-Theme ParadoxDer letzte Befehl legt das Thema für die Konsole fest. Überprüfen Sie die Liste der verfügbaren Themen unten.
Listen Sie die aktuelle Konfiguration auf:
$ThemeSettings 
Sie können die Einstellungen optimieren, indem Sie $ThemeSettings manipulieren. In diesem Beispiel können Sie das Zweigsymbol mit einem Unicode -Zeichen optimieren:
$ThemeSettings .GitSymbols.BranchSymbol = [ char ]::ConvertFromUtf32( 0xE0A0 )Vergessen Sie auch die Posh-Git-Einstellungen selbst nicht (Aktivieren Sie zum Beispiel die Stash-Indikation):
$GitPromptSettings Verstecken Sie Ihren username@domain wenn Sie nicht in einer virtuellen Maschine für die Themen Agnoster, Fish, Honukai, Paradox und Sorin sind:
$DefaultUser = ' yourUsernameHere ' Set-Theme : Legen Sie ein Thema aus dem Themenverzeichnis. Wenn keine Übereinstimmung gefunden wird, wird es nicht geändert. AutoComplete steht zur Auflistung und vollständigen verfügbaren Themen zur Verfügung.
Set-Theme paradox Show-ThemeColors : Zeigen Sie die vom Thema verwendeten Farben an

Show-Colors : Anzeigenfarben in Conemu konfiguriert

















Wenn Sie ein Thema erstellen möchten, kann dies ziemlich einfach erfolgen, indem Sie eine mytheme.psm1 -Datei im Ordner hinzufügen, das in $ThemeSettings.MyThemesLocation angegeben ist (der Ordner standardmäßig ~DocumentsWindowsPowerShellPoshThemes , fühle dich frei, es zu ändern).
Die einzige erforderliche Funktion ist Write-Theme . Sie können die folgende Vorlage verwenden, um loszulegen:
# 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 Nutzen Sie die öffentlichen Helferfunktionen Get-VCSStatus , Get-VcsInfo , Get-FormattedRootLocation , Get-ShortPath , Set-CursorForRightBlockWrite , Set-CursorUp , Set-Newline oder fügen Sie Ihre eigene Logik vollständig hinzu.
Um die Ausgabe in Conemu zu testen, wechseln Sie einfach zu Ihrem Thema:
Set-Theme mythemeWenn Sie Ihr Thema in oh-my-posh einfügen möchten, senden Sie mir eine PR und ich werde versuchen, so schnell wie möglich Feedback zu geben.
Frohe Theming!
Da es zu Zugang zu den Stapelinformationen bei der Verwendung von Pushd/Popd aus einem Thema ist, können Sie eine von Jonathan Leech-Pepin vorgeschlagene Problemumgehung verwenden. Fügen Sie in Ihrem $PROFILE eine Variable hinzu, die als korrekt geschriebener Zeiger fungiert, um den Stapelkontext zu holen:
$getStackContext = { Get-Location - Stack}Greifen Sie in Ihrem benutzerdefinierten Thema als nächstes auf die Informationen zu, die Sie anzeigen möchten:
$stackCount = ( & $getStackContext ).count Dies wird durch die ConsoleTitle verursacht. Wie Andrew Stanton-Nurse erklärt, hängt es damit verbunden, wie Terminals mit OSC-Codes funktionieren. Die Behebung besteht darin, die ConsoleTitle zu deaktivieren, wenn Sie in ITM2 2 das folgende Ausschnitt zu Ihrem $PROFILE hinzufügen.
if ( $ env: LC_TERMINAL -eq " iTerm2 " ) {
$ThemeSettings .Options.ConsoleTitle = $false
}