Použití prediktorů v PSReadLine

PSReadLine 2.1.0 zavedl funkci Prediktivní IntelliSense . Prediktivní IntelliSense poskytuje návrhy pro úplné příkazy založené na položkách z historie psReadLine . PSReadLine 2.2.2 rozšiřuje možnosti prediktivní technologie IntelliSense přidáním podpory modulů plug-in, které používají pokročilou logiku k poskytování návrhů pro úplné příkazy. Nejnovější verze PSReadLine 2.2.6 umožňuje ve výchozím nastavení předpovědi.

Použití prediktivní technologie IntelliSense

Pokud je povolená prediktivní technologie IntelliSense, návrh predikce se zobrazí jako barevný text za kurzorem uživatele. Návrhy prediktivní technologie IntelliSense pomáhají novým a zkušeným uživatelům PowerShellu zjišťovat, upravovat a spouštět úplné příkazy na základě odpovídajících předpovědí. Návrhy můžou pocházet z historie uživatele a dalších modulů plug-in specifických pro doménu.

Vložené zobrazení předpovědi

Předchozí obrázky zobrazují výchozí nastavení InlineView návrhu. Stisknutím klávesy RightArrow přijmete vložený návrh. Po přijetí návrhu můžete příkazový řádek upravit před stisknutím klávesy Enter a příkaz spustit.

PSReadLine také nabízí ListView prezentaci návrhů.

Zobrazení seznamu předpovědí

Když jste v zobrazení seznamu, můžete pomocí kláves se šipkami procházet dostupné návrhy. Zobrazení seznamu také zobrazuje zdroj předpovědi.

Výchozí hodnota InlineViewPSReadLine je . Můžete přepínat mezi InlineView klávesou F2 a ListView stisknutím klávesy F2 . Ke změně zobrazení můžete použít také parametr Set-PSReadLineOption PredictionViewStyle.

Správa prediktivní technologie IntelliSense

Pokud chcete používat prediktivní IntelliSense, musíte mít nainstalovanou novější verzi PSReadLine . Nejlepších výsledků dosáhnete instalací nejnovější verze modulu.

Instalace PSReadLine pomocí modulu PowerShellGet:

Install-Module -Name PSReadLine

Nebo nainstalujte pomocí nového modulu PowerShellGet v3 :

Install-PSResource -Name PSReadLine

PsReadLine je možné nainstalovat ve Windows PowerShellu 5.1 nebo v PowerShellu 7 nebo novějším. Pokud chcete použít moduly plug-in prediktoru, musíte být spuštěné v PowerShellu 7.2 nebo novějším. Windows PowerShell 5.1 může používat prediktor založený na historii.

V PSReadLine 2.2.6 je prediktivní intelliSense ve výchozím nastavení povolená v závislosti na následujících podmínkách:

  • Pokud je virtuální terminál (VT) podporovaný a psReadLine spuštěný v PowerShellu 7.2 nebo novějším, je PredictionSource nastavený na HistoryAndPlugin
  • Pokud je virtuální počítač podporovaný a psReadLine spuštěný v PowerShellu starším než 7.2, je PredictionSource nastavený na History
  • Pokud virtuální počítač nepodporuje, nastaví se PredictionSource na Nonehodnotu .

Aktuální nastavení zobrazíte pomocí následujícího příkazu:

Get-PSReadLineOption | Select-Object -Property PredictionSource

Zdroj predikcí můžete změnit pomocí rutiny Set-PSReadLineOption s parametrem PredictionSource . PredictionSource lze nastavit na:

  • None
  • History
  • Plugin
  • HistoryAndPlugin

Poznámka:

Predikce založené na historii pocházejí z historie, kterou udržuje PSReadLine. Tato historie je komplexnější než historie založená na relacích, kterou můžete použít Get-History. Další informace najdete v části Historie příkazů about_PSReadLine.

Nastavení barvy předpovědi

Ve výchozím nastavení se předpovědi zobrazují ve světle šedém textu na stejném řádku, na který uživatel píše. Aby bylo možné podporovat potřeby přístupnosti, můžete přizpůsobit barvu předpovědi. Barvy se definují pomocí řídicích sekvencí ANSI. Můžete použít $PSStyle k vytváření řídicích sekvencí ANSI.

Set-PSReadLineOption -Colors @{ InlinePrediction = $PSStyle.Background.Blue }

Nebo si můžete vytvořit vlastní. Výchozí světle šedá barva textu předpovědi se dá obnovit pomocí následující řídicí sekvence ANSI.

Set-PSReadLineOption -Colors @{ InlinePrediction = "`e[38;5;238m" }

Další informace o nastavení barvy předpovědi a dalších nastavení PSReadLine naleznete v tématu Set-PSReadLineOption.

Změna klávesových vazeb

PSReadLine obsahuje funkce pro navigaci a přijímání předpovědí. Příklad:

  • AcceptSuggestion - Přijměte aktuální vložený návrh.
  • AcceptNextSuggestionWord - Přijměte další slovo vloženého návrhu.
  • AcceptSuggestion is built within ForwardChar, which is bound to RightArrow by default
  • AcceptNextSuggestionWordje sestaven v rámci funkce ForwardWord, která může být vázána na Ctrl+f

Rutinu Set-PSReadLineKeyHandler můžete použít ke změně klíčových vazeb.

Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord

Při použití této vazby přijme stisknutím klávesy Ctrl+f další slovo vloženého návrhu, když je kurzor na konci aktuálního řádku pro úpravy. Můžete svázat další klíče s AcceptSuggestion podobnými funkcemi a AcceptNextSuggestionWord pro podobné funkce. Můžete například chtít, aby Funkce RightArrow přijímala další slovo vloženého návrhu místo celého řádku návrhu.

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

Použití jiných modulů plug-in prediktoru

Modul Az.Tools.Predictor byl prvním modulem plug-in prediktivní technologie IntelliSense. Používá machine Učení k predikci toho, jaký příkaz Azure PowerShellu chcete spustit, a parametrů, které chcete použít. Další informace a pokyny k instalaci naleznete v tématu Oznámení obecné dostupnosti Az.Tools.Predictor.

Modul CompletionPredictor přidává prostředí IntelliSense pro cokoli, co je možné v PowerShellu dokončit pomocí tabulátoru. Při nastavení InlineViewPSReadLine získáte normální prostředí pro dokončování tabulátoru. Když přejdete na ListView, získáte prostředí IntelliSense. Modul CompletionPredictor můžete nainstalovat z Galerie prostředí PowerShell.

PowerShell IntelliSense s využitím completionPredictoru

Jak už jsme si poznamenali, ListView ukazuje zdroj předpovědi. Pokud máte nainstalovaných více modulů plug-in, predikce jsou seskupené podle zdroje s historií uvedenou jako první následovanou jednotlivými moduly plug-in v pořadí, v jakém byly načteny.

Vytvoření vlastního prediktoru modulu

Pomocí jazyka C# můžete napsat vlastní prediktor a vytvořit zkompilovaný modul PowerShellu. Modul musí implementovat rozhraní System.Management.Automation.Subsystem.Prediction.ICommandPredictor . Toto rozhraní deklaruje metody použité k dotazování na výsledky předpovědi a poskytnutí zpětné vazby.

Další informace najdete v tématu Vytvoření prediktoru příkazového řádku.