Använda prediktorer i PSReadLine
PSReadLine 2.1.0 introducerade funktionen Predictive IntelliSense . Predictive IntelliSense innehåller förslag på fullständiga kommandon baserat på objekt från PSReadLine-historiken. PSReadLine 2.2.2 utökar kraften i Predictive IntelliSense genom att lägga till stöd för plugin-moduler som använder avancerad logik för att ge förslag på fullständiga kommandon. Den senaste versionen, PSReadLine 2.2.6, möjliggör förutsägelser som standard.
Använda Predictive IntelliSense
När Predictive IntelliSense är aktiverat visas förutsägelseförslaget som färgad text efter användarens markör. Förslagen från Predictive IntelliSense hjälper nya och erfarna användare av PowerShell att identifiera, redigera och köra fullständiga kommandon baserat på matchande förutsägelser. Förslag kan komma från användarens historik och ytterligare domänspecifika plugin-program.
Föregående bilder visar standardvärdet InlineView
för förslaget. Om du trycker på RightArrow-tangenten accepteras ett infogat förslag. När du har accepterat förslaget kan du redigera kommandoraden innan du trycker på Retur för att köra kommandot.
PSReadLine erbjuder också en ListView
presentation av förslagen.
När du är i listvyn kan du använda piltangenterna för att bläddra igenom de tillgängliga förslagen. Listvyn visar också källan till förutsägelsen.
PSReadLine är InlineView
som standard . Du kan växla mellan InlineView
och ListView
genom att trycka på F2-tangenten. Du kan också använda parametern Set-PSReadLineOption
PredictionViewStyle för för att ändra vyn.
Hantera Predictive IntelliSense
Om du vill använda Predictive IntelliSense måste du ha en nyare version av PSReadLine installerad. Installera den senaste versionen av modulen för bästa resultat.
Så här installerar du PSReadLine med PowerShellGet:
Install-Module -Name PSReadLine
Eller installera med den nya PowerShellGet v3-modulen :
Install-PSResource -Name PSReadLine
PSReadLine kan installeras i Windows PowerShell 5.1 eller i PowerShell 7 eller senare. Om du vill använda plugin-program för förutsägelse måste du köra i PowerShell 7.2 eller senare. Windows PowerShell 5.1 kan använda den historikbaserade förutsägelsen.
I PSReadLine 2.2.6 aktiveras Predictive IntelliSense som standard beroende på följande villkor:
- Om virtuell terminal (VT) stöds och PSReadLine körs i PowerShell 7.2 eller senare är PredictionSource inställt på
HistoryAndPlugin
- Om VT stöds och PSReadLine körs i PowerShell som är äldre än 7.2 är PredictionSource inställt på
History
- Om VT inte stöds är PredictionSource inställt på
None
.
Använd följande kommando för att se den aktuella inställningen:
Get-PSReadLineOption | Select-Object -Property PredictionSource
Du kan ändra förutsägelsekällan med hjälp av cmdleten Set-PSReadLineOption
med parametern PredictionSource . PredictionSource kan anges till:
None
History
Plugin
HistoryAndPlugin
Kommentar
Historikbaserade förutsägelser kommer från historiken som hanteras av PSReadLine. Den historiken är mer omfattande än den sessionsbaserade historik som du kan se med hjälp av Get-History
. Mer information finns i avsnittet Kommandohistorik i about_PSReadLine.
Ange förutsägelsefärgen
Som standard visas förutsägelser i ljusgrå text på samma rad som användaren skriver. För att stödja hjälpmedelsbehov kan du anpassa förutsägelsefärgen. Färger definieras med hjälp av ANSI-escape-sekvenser. Du kan använda $PSStyle
för att skapa ANSI-escape-sekvenser.
Set-PSReadLineOption -Colors @{ InlinePrediction = $PSStyle.Background.Blue }
Eller så kan du skapa egna. Standardtextfärgen för ljusgrå förutsägelse kan återställas med hjälp av följande ANSI-escape-sekvens.
Set-PSReadLineOption -Colors @{ InlinePrediction = "`e[38;5;238m" }
Mer information om hur du anger förutsägelsefärg och andra PSReadLine-inställningar finns i Set-PSReadLineOption.
Ändra nyckelbindningar
PSReadLine innehåller funktioner för att navigera och acceptera förutsägelser. Till exempel:
AcceptSuggestion
– Acceptera det aktuella infogade förslagetAcceptNextSuggestionWord
- Acceptera nästa ord i det infogade förslagetAcceptSuggestion
är inbyggd iForwardChar
, som är bunden till RightArrow som standardAcceptNextSuggestionWord
är inbyggd i funktionenForwardWord
, som kan bindas till Ctrl+f
Du kan använda cmdleten Set-PSReadLineKeyHandler
för att ändra nyckelbindningar.
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
Med den här bindningen accepterar ctrl +f nästa ord i ett infogat förslag när markören är i slutet av den aktuella redigeringsraden. Du kan binda andra nycklar till AcceptSuggestion
och AcceptNextSuggestionWord
för liknande funktioner. Du kanske till exempel vill att RightArrow ska acceptera nästa ord i det infogade förslaget i stället för hela förslagsraden.
Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord
Använda andra plugin-program för förutsägare
Modulen Az.Tools.Predictor var det första plugin-programmet för Predictive IntelliSense. Den använder Machine Learning för att förutsäga vilket Azure PowerShell-kommando du vill köra och vilka parametrar du vill använda. Mer information och installationsinstruktioner finns i Meddelande om allmän tillgänglighet för Az.Tools.Predictor.
Modulen CompletionPredictor lägger till en IntelliSense-upplevelse för allt som kan tabbas i PowerShell. Med PSReadLine inställt på InlineView
får du den normala flikavslutningen. När du byter till ListView
får du IntelliSense-upplevelsen. Du kan installera modulen CompletionPredictor från PowerShell-galleriet.
Som tidigare nämnts ListView
visar du källan till förutsägelsen. Om du har flera plugin-program installerade grupperas förutsägelserna efter källa med historiken angiven först följt av varje plugin-program i den ordning som de lästes in.
Skapa en egen förutsägelsemodul
Du kan skriva en egen förutsägelse med hjälp av C# för att skapa en kompilerad PowerShell-modul. Modulen måste implementera gränssnittet System.Management.Automation.Subsystem.Prediction.ICommandPredictor . Det här gränssnittet deklarerar de metoder som används för att fråga efter förutsägelseresultat och ge feedback.
Mer information finns i Så här skapar du en kommandoradsförse förutsägare.