Używanie predyktorów w elemecie PSReadLine

Program PSReadLine 2.1.0 wprowadził funkcję Predykcyjnej funkcji IntelliSense . Predykcyjna funkcja IntelliSense udostępnia sugestie dotyczące pełnych poleceń opartych na elementach z historii psReadLine . Funkcja PSReadLine 2.2.2 rozszerza możliwości funkcji Predykcyjnej funkcji IntelliSense, dodając obsługę modułów wtyczek korzystających z zaawansowanej logiki w celu udostępnienia sugestii dotyczących pełnych poleceń. Najnowsza wersja PSReadLine 2.2.6 domyślnie umożliwia przewidywanie.

Korzystanie z funkcji Predykcyjnej IntelliSense

Po włączeniu funkcji Predykcyjnej funkcji IntelliSense sugestia przewidywania jest wyświetlana jako kolorowy tekst po kursorze użytkownika. Sugestie z funkcji Predykcyjnej funkcji IntelliSense ułatwiają nowym i doświadczonym użytkownikom programu PowerShell odnajdywanie, edytowanie i wykonywanie pełnych poleceń w oparciu o pasujące przewidywania. Sugestie mogą pochodzić z historii użytkownika i dodatkowych wtyczek specyficznych dla domeny.

Wbudowany widok przewidywania

Poprzednie obrazy pokazują domyślną InlineView sugestię. Naciśnięcie klawisza RightArrow akceptuje sugestię śródliniową. Po zaakceptowaniu sugestii możesz edytować wiersz polecenia przed naciśnięciem klawisza Enter , aby uruchomić polecenie.

Program PSReadLine oferuje również prezentację ListView sugestii.

Widok listy przewidywań

W widoku listy możesz użyć klawiszy strzałek, aby przewinąć dostępne sugestie. Widok listy zawiera również źródło przewidywania.

Wartość domyślna PSReadLine to InlineView. Możesz przełączać się między InlineView i ListView przez naciśnięcie klawisza F2 . Możesz również użyć parametru PredictionViewStyle polecenia , Set-PSReadLineOption aby zmienić widok.

Zarządzanie predykcyjną funkcją IntelliSense

Aby korzystać z funkcji Predykcyjnej IntelliSense, musisz mieć zainstalowaną nowszą wersję programu PSReadLine . Aby uzyskać najlepsze wyniki, zainstaluj najnowszą wersję modułu.

Aby zainstalować element PSReadLine przy użyciu modułu PowerShellGet:

Install-Module -Name PSReadLine

Możesz też zainstalować przy użyciu nowego modułu PowerShellGet w wersji 3 :

Install-PSResource -Name PSReadLine

Narzędzie PSReadLine można zainstalować w programie Windows PowerShell 5.1 lub w programie PowerShell 7 lub nowszym. Aby korzystać z wtyczek predyktora, musisz uruchomić program PowerShell w wersji 7.2 lub nowszej. Program Windows PowerShell 5.1 może używać predyktora opartego na historii.

W programie PSReadLine 2.2.6 funkcja Predictive IntelliSense jest domyślnie włączona w zależności od następujących warunków:

  • Jeśli terminal wirtualny (VT) jest obsługiwany i program PSReadLine działa w programie PowerShell 7.2 lub nowszym, właściwość PredictionSource jest ustawiona na wartość HistoryAndPlugin
  • Jeśli maszyna wirtualna jest obsługiwana, a funkcja PSReadLine działa w programie PowerShell starszym niż 7.2, właściwość PredictionSource jest ustawiona na wartość History
  • Jeśli funkcja VT nie jest obsługiwana, właściwość PredictionSource jest ustawiona na Nonewartość .

Użyj następującego polecenia, aby wyświetlić bieżące ustawienie:

Get-PSReadLineOption | Select-Object -Property PredictionSource

Źródło przewidywania można zmienić przy użyciu Set-PSReadLineOption polecenia cmdlet z parametrem PredictionSource . Źródło przewidywania można ustawić na:

  • None
  • History
  • Plugin
  • HistoryAndPlugin

Uwaga

Przewidywania oparte na historii pochodzą z historii obsługiwanej przez program PSReadLine. Ta historia jest bardziej kompleksowa niż historia oparta na sesji, którą można zobaczyć przy użyciu programu Get-History. Aby uzyskać więcej informacji, zobacz sekcję Historia poleceń about_PSReadLine.

Ustawianie koloru przewidywania

Domyślnie przewidywania są wyświetlane w jasnoszarym tekście w tym samym wierszu, który użytkownik wpisuje. Aby zapewnić obsługę potrzeb związanych z ułatwieniami dostępu, możesz dostosować kolor przewidywania. Kolory są definiowane przy użyciu sekwencji ucieczki ANSI. Możesz użyć $PSStyle polecenia , aby utworzyć sekwencje ucieczki ANSI.

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

Możesz też utworzyć własne. Domyślny kolor tekstu przewidywania jasnoszary można przywrócić przy użyciu następującej sekwencji ucieczki ANSI.

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

Aby uzyskać więcej informacji na temat ustawiania koloru przewidywania i innych ustawień psReadLine, zobacz Set-PSReadLineOption.

Zmienianie powiązania klawiszy

Funkcja PSReadLine zawiera funkcje do nawigowania i akceptowania przewidywań. Na przykład:

  • AcceptSuggestion - Zaakceptuj bieżącą sugestię śródliniową
  • AcceptNextSuggestionWord - Zaakceptuj następne słowo sugestii wbudowanej
  • AcceptSuggestionjest wbudowany w obiekcie ForwardChar, który jest domyślnie powiązany z rightarrow
  • AcceptNextSuggestionWordjest wbudowany w funkcję ForwardWord, która może być powiązana z klawiszem Ctrl+f

Możesz użyć Set-PSReadLineKeyHandler polecenia cmdlet , aby zmienić powiązania kluczy.

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

Za pomocą tego powiązania naciśnięcie klawisza Ctrl+f akceptuje następny wyraz sugestii śródwierszowej, gdy kursor znajduje się na końcu bieżącego wiersza edycji. Możesz powiązać inne klucze z AcceptSuggestion i AcceptNextSuggestionWord dla podobnych funkcji. Na przykład możesz zmienić wartość RightArrow na zaakceptowanie następnego słowa sugestii wbudowanej zamiast całego wiersza sugestii.

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

Korzystanie z innych wtyczek predyktora

Moduł Az.Tools.Predictor był pierwszą wtyczką dla funkcji Predictive IntelliSense. Używa Edukacja Maszyny do przewidywania polecenia programu Azure PowerShell, które chcesz uruchomić, i parametrów, których chcesz użyć. Aby uzyskać więcej informacji i instrukcji instalacji, zobacz Ogłoszenie ogólnej dostępności az.Tools.Predictor.

Moduł CompletionPredictor dodaje środowisko funkcji IntelliSense dla wszystkich elementów, które można ukończyć na karcie w programie PowerShell. Po ustawieniu parametru PSReadLine na InlineViewwartość uzyskasz normalne środowisko uzupełniania kart. Po przełączeniu do ListViewprogramu uzyskasz środowisko intelliSense. Moduł CompletionPredictor można zainstalować z Galeria programu PowerShell.

Funkcja IntelliSense programu PowerShell przy użyciu elementu CompletionPredictor

Jak wspomniano wcześniej, ListView pokazuje źródło przewidywania. Jeśli masz wiele wtyczek zainstalowanych przewidywań, są pogrupowane według źródła z kolumną Historia wymienioną jako pierwsza, po której następuje każda wtyczka w kolejności, w której zostały załadowane.

Tworzenie własnego modułu predyktora

Możesz napisać własny predyktor przy użyciu języka C#, aby utworzyć skompilowany moduł programu PowerShell. Moduł musi zaimplementować interfejs System.Management.Automation.Subsystem.Prediction.ICommandPredictor . Ten interfejs deklaruje metody używane do wykonywania zapytań dotyczących wyników przewidywania i przekazywania opinii.

Aby uzyskać więcej informacji, zobacz How to create a command-line predictor (Jak utworzyć predyktor wiersza polecenia).