Dela via


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.

Infogad vy över en förutsägelse

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.

Listvy över förutsägelser

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 InlineViewsom 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örslaget
  • AcceptNextSuggestionWord - Acceptera nästa ord i det infogade förslaget
  • AcceptSuggestion är inbyggd i ForwardChar, som är bunden till RightArrow som standard
  • AcceptNextSuggestionWordär inbyggd i funktionen ForwardWord, 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å InlineViewfår du den normala flikavslutningen. När du byter till ListViewfår du IntelliSense-upplevelsen. Du kan installera modulen CompletionPredictor från PowerShell-galleriet.

PowerShell IntelliSense med hjälp av CompletionPredictor

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.