Udostępnij za pośrednictwem


Set-PSReadLineOption

Dostosowuje zachowanie edytowania wiersza polecenia w narzędziu PSReadLine.

Składnia

Set-PSReadLineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <String>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <System.Func[System.String,System.Object]>]
   [-CommandValidationHandler <System.Action[System.Management.Automation.Language.CommandAst]>]
   [-HistorySearchCursorMovesToEnd]
   [-MaximumHistoryCount <Int32>]
   [-MaximumKillRingCount <Int32>]
   [-ShowToolTips]
   [-ExtraPromptLineCount <Int32>]
   [-DingTone <Int32>]
   [-DingDuration <Int32>]
   [-BellStyle <BellStyle>]
   [-CompletionQueryItems <Int32>]
   [-WordDelimiters <String>]
   [-HistorySearchCaseSensitive]
   [-HistorySaveStyle <HistorySaveStyle>]
   [-HistorySavePath <String>]
   [-AnsiEscapeTimeout <Int32>]
   [-PromptText <String[]>]
   [-ViModeIndicator <ViModeStyle>]
   [-ViModeChangeHandler <ScriptBlock>]
   [-Colors <Hashtable>]
   [-PredictionSource <PredictionSource>]
   [<CommonParameters>]

Opis

Polecenie Set-PSReadLineOption cmdlet dostosowuje zachowanie modułu PSReadLine podczas edytowania wiersza polecenia. Aby wyświetlić ustawienia elementu PSReadLine , użyj polecenia Get-PSReadLineOption.

Przykłady

Przykład 1. Ustawianie kolorów pierwszego planu i tła

W tym przykładzie ustawiono element PSReadLine , aby wyświetlić token komentarza z zielonym tekstem pierwszego planu na szarym tle. W sekwencji ucieczki użytej w przykładzie 32 reprezentuje kolor pierwszego planu, a 47 reprezentuje kolor tła.

Set-PSReadLineOption -Colors @{ "Comment"="`e[32;47m" }

Możesz ustawić tylko kolor tekstu pierwszego planu. Na przykład jasny zielony kolor tekstu pierwszego planu dla tokenu Komentarz : "Comment"="`e[92m".

Przykład 2. Ustawianie stylu dzwonka

W tym przykładzie funkcja PSReadLine będzie reagować na błędy lub warunki wymagające uwagi użytkownika. BellStyle jest ustawiony, aby emitować słyszalny sygnał sygnału dźwiękowego na 1221 Hz dla 60 ms.

Set-PSReadLineOption -BellStyle Audible -DingTone 1221 -DingDuration 60

Uwaga

Ta funkcja może nie działać we wszystkich hostach na platformach.

Przykład 3. Ustawianie wielu opcji

Set-PSReadLineOption może ustawić wiele opcji za pomocą tabeli skrótów.

$PSReadLineOptions = @{
    EditMode = "Emacs"
    HistoryNoDuplicates = $true
    HistorySearchCursorMovesToEnd = $true
    Colors = @{
        "Command" = "#8181f7"
    }
}
Set-PSReadLineOption @PSReadLineOptions

Tabela $PSReadLineOptions skrótów ustawia klucze i wartości. Set-PSReadLineOption używa kluczy i wartości za pomocą polecenia @PSReadLineOptions , aby zaktualizować opcje PSReadLine .

Klucze i wartości wchodzące w nazwę $PSReadLineOptions tabeli skrótów można wyświetlić w wierszu polecenia programu PowerShell.

Przykład 4. Ustawianie wielu opcji kolorów

W tym przykładzie pokazano, jak ustawić więcej niż jedną wartość koloru w jednym poleceniu.

Set-PSReadLineOption -Colors @{
  Command            = 'Magenta'
  Number             = 'DarkGray'
  Member             = 'DarkGray'
  Operator           = 'DarkGray'
  Type               = 'DarkGray'
  Variable           = 'DarkGreen'
  Parameter          = 'DarkGreen'
  ContinuationPrompt = 'DarkGray'
  Default            = 'DarkGray'
}

Przykład 5. Ustawianie wartości kolorów dla wielu typów

W tym przykładzie przedstawiono trzy różne metody ustawiania koloru tokenów wyświetlanych w elemecie PSReadLine.

Set-PSReadLineOption -Colors @{
 # Use a ConsoleColor enum
 "Error" = [ConsoleColor]::DarkRed

 # 24 bit color escape sequence
 "String" = "$([char]0x1b)[38;5;100m"

 # RGB value
 "Command" = "#8181f7"
}

Przykład 6. Używanie programu ViModeChangeHandler do wyświetlania zmian trybu Vi

Ten przykład emituje zmianę kursora ucieczki VT w odpowiedzi na zmianę trybu Vi .

function OnViModeChange {
    if ($args[0] -eq 'Command') {
        # Set the cursor to a blinking block.
        Write-Host -NoNewLine "`e[1 q"
    } else {
        # Set the cursor to a blinking line.
        Write-Host -NoNewLine "`e[5 q"
    }
}
Set-PSReadLineOption -ViModeIndicator Script -ViModeChangeHandler $Function:OnViModeChange

Funkcja OnViModeChange ustawia opcje kursora dla trybów Vi : insert i command. Program ViModeChangeHandler używa dostawcy Function: do odwoływanie się do metody OnViModeChange jako obiektu bloku skryptu.

Aby uzyskać więcej informacji, zobacz about_Providers.

Parametry

-AddToHistoryHandler

Określa ScriptBlock , który kontroluje, które polecenia są dodawane do historii PSReadLine .

Element ScriptBlock odbiera wiersz polecenia jako dane wejściowe. Jeśli funkcja ScriptBlock zwróci wartość $True, wiersz polecenia zostanie dodany do historii.

Type:Func<T,TResult>[System.String,System.Object]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AnsiEscapeTimeout

Ta opcja jest specyficzna dla systemu Windows, gdy dane wejściowe są przekierowywane, na przykład podczas uruchamiania w obszarze tmux lub screen.

W przypadku przekierowanych danych wejściowych w systemie Windows wiele kluczy jest wysyłanych jako sekwencja znaków rozpoczynających się od znaku ucieczki. Nie można odróżnić pojedynczego znaku ucieczki, po którym następuje więcej znaków i prawidłowej sekwencji ucieczki.

Zakłada się, że terminal może wysyłać znaki szybciej niż typy użytkowników. Funkcja PSReadLine czeka na ten limit czasu przed stwierdzeniem, że otrzymała kompletną sekwencję ucieczki.

Jeśli podczas wpisywania są wyświetlane losowe lub nieoczekiwane znaki, możesz dostosować ten limit czasu.

Type:Int32
Position:Named
Default value:100
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-BellStyle

Określa, jak psReadLine reaguje na różne błędy i niejednoznaczne warunki.

Prawidłowe wartości są następujące:

  • Słyszalne: Krótki sygnał dźwiękowy.
  • Wizualizacja: Tekst miga krótko.
  • Brak: Brak opinii.
Type:BellStyle
Position:Named
Default value:Audible
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Colors

Parametr Kolory określa różne kolory używane przez element PSReadLine.

Argument jest tabelą skrótów, w której klucze określają, który element i wartości określają kolor. Aby uzyskać więcej informacji, zobacz about_Hash_Tables.

Kolory mogą być wartością z konsoliColor, na przykład [ConsoleColor]::Red, lub prawidłową sekwencją ucieczki ANSI. Prawidłowe sekwencje ucieczki zależą od terminalu. W programie PowerShell 5.0 przykładowa sekwencja ucieczki dla czerwonego tekstu to $([char]0x1b)[91m. W programie PowerShell 6 lub nowszym ta sama sekwencja ucieczki to `e[91m. Można określić inne sekwencje ucieczki, w tym następujące typy:

  • 256 kolor
  • Kolor 24-bitowy
  • Pierwszy plan, tło lub oba
  • Odwrotność, pogrubienie

Aby uzyskać więcej informacji na temat kodów kolorów ANSI, zobacz kod ucieczki ANSI w Wikipedii.

Prawidłowe klucze obejmują:

  • ContinuationPrompt: kolor monitu kontynuacji.
  • Wyróżnienie: Kolor wyróżnienia. Na przykład pasujący tekst podczas wyszukiwania historii.
  • Błąd: kolor błędu. Na przykład w wierszu polecenia.
  • Wybór: kolor wyróżniania zaznaczenia menu lub zaznaczonego tekstu.
  • Ustawienie domyślne: domyślny kolor tokenu.
  • Komentarz: kolor tokenu komentarza.
  • Słowo kluczowe: kolor tokenu słowa kluczowego.
  • Ciąg: kolor tokenu ciągu.
  • Operator: kolor tokenu operatora.
  • Zmienna: kolor tokenu zmiennej.
  • Polecenie: kolor tokenu polecenia.
  • Parametr: kolor tokenu parametru.
  • Typ: kolor tokenu typu.
  • Liczba: kolor tokenu liczbowego.
  • Element członkowski: kolor tokenu nazwy elementu członkowskiego.
  • InlinePrediction: kolor wbudowanego widoku sugestii predykcyjnej.
Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandValidationHandler

Określa scriptBlock , który jest wywoływany z ValidateAndAcceptLine. Jeśli zostanie zgłoszony wyjątek, walidacja zakończy się niepowodzeniem i zostanie zgłoszony błąd.

Przed zgłoszeniem wyjątku program obsługi weryfikacji może umieścić kursor w punkcie błędu, aby ułatwić jego naprawienie. Program obsługi walidacji może również zmienić wiersz polecenia, na przykład w celu skorygowania typowych błędów typowych.

Funkcja ValidateAndAcceptLine służy do unikania bałaganu historii za pomocą poleceń, które nie mogą działać.

Type:Action<T>[CommandAst]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CompletionQueryItems

Określa maksymalną liczbę elementów uzupełniania, które są wyświetlane bez monitowania.

Jeśli liczba elementów do wyświetlenia jest większa niż ta wartość, funkcja PSReadLine wyświetla monity tak/nie przed wyświetleniem elementów uzupełniania.

Type:Int32
Position:Named
Default value:100
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContinuationPrompt

Określa ciąg wyświetlany na początku kolejnych wierszy po wprowadzeniu danych wejściowych wielowierszowych. Wartość domyślna to dwukrotnie większe niż znaki (>>). Pusty ciąg jest prawidłowy.

Type:String
Position:Named
Default value:>>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingDuration

Określa czas trwania sygnału dźwiękowego, gdy właściwość BellStyle jest ustawiona na Wartość Audible.

Type:Int32
Position:Named
Default value:50ms
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingTone

Określa ton w Hertz (Hz) sygnału sygnału, gdy BellStyle jest ustawiony na Słyszalne.

Type:Int32
Position:Named
Default value:1221
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EditMode

Określa tryb edycji wiersza polecenia. Użycie tego parametru powoduje zresetowanie wszelkich powiązań kluczy ustawionych przez Set-PSReadLineKeyHandler.

Prawidłowe wartości są następujące:

  • Windows: powiązania kluczy emulują program PowerShell, cmd i program Visual Studio.
  • Emacs: Powiązania klawiszy emulują powłokę Bash lub Emacs.
  • Vi: Powiązania klawiszy emulują Vi.

Użyj polecenia Get-PSReadLineKeyHandler , aby wyświetlić powiązania kluczy dla aktualnie skonfigurowanego modułu EditMode.

Type:EditMode
Position:Named
Default value:Windows
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ExtraPromptLineCount

Określa liczbę dodatkowych wierszy.

Jeśli monit obejmuje więcej niż jeden wiersz, określ wartość tego parametru. Użyj tej opcji, jeśli chcesz, aby dodatkowe wiersze są dostępne, gdy funkcja PSReadLine wyświetla monit po wyświetleniu niektórych danych wyjściowych. Na przykład funkcja PSReadLine zwraca listę uzupełniania.

Ta opcja jest potrzebna mniej niż w poprzednich wersjach elementu PSReadLine, ale jest przydatna InvokePrompt , gdy jest używana funkcja.

Type:Int32
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistoryNoDuplicates

Ta opcja steruje zachowaniem wycofania. Duplikowane polecenia są nadal dodawane do pliku historii. Po ustawieniu tej opcji pojawia się tylko ostatnie wywołanie podczas przywoływania poleceń. Powtarzające się polecenia są dodawane do historii, aby zachować kolejność podczas wycofywania. Jednak zazwyczaj nie chcesz widzieć polecenia wiele razy podczas przypominania lub przeszukiwania historii.

Domyślnie właściwość HistoryNoDuplicates globalnego obiektu PSConsoleReadLineOptions ma wartość True. Przy użyciu tego parametru SwitchParameter ustawia wartość właściwości na True. Aby zmienić wartość właściwości, należy określić wartość parametru SwitchParameter w następujący sposób: -HistoryNoDuplicates:$False.

Za pomocą następującego polecenia można ustawić wartość właściwości bezpośrednio:

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySavePath

Określa ścieżkę do pliku, w którym jest zapisywana historia. Komputery z systemem Windows lub innym niż Windows przechowują plik w różnych lokalizacjach. Nazwa pliku jest przechowywana w zmiennej $($host.Name)_history.txt, na przykład ConsoleHost_history.txt.

Jeśli nie używasz tego parametru, domyślna ścieżka jest następująca:

Windows

  • $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\$($host.Name)_history.txt

inne niż Windows

  • $env:XDG_DATA_HOME/powershell/PSReadLine/$($host.Name)_history.txt
  • $env:HOME/.local/share/powershell/PSReadLine/$($host.Name)_history.txt
Type:String
Position:Named
Default value:A file named $($host.Name)_history.txt in $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine on Windows and $env:XDG_DATA_HOME/powershell/PSReadLine or $env:HOME/.local/share/powershell/PSReadLine on non-Windows platforms
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySaveStyle

Określa, jak program PSReadLine zapisuje historię.

Prawidłowe wartości są następujące:

  • SaveIncrementally: Zapisz historię po wykonaniu każdego polecenia i udostępnieniu w wielu wystąpieniach programu PowerShell.
  • SaveAtExit: dołączanie pliku historii po zakończeniu działania programu PowerShell.
  • SaveNothing: nie używaj pliku historii.
Type:HistorySaveStyle
Position:Named
Default value:SaveIncrementally
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCaseSensitive

Określa, że wyszukiwanie historii jest uwzględniane wielkości liter w funkcjach, takich jak ReverseSearchHistory lub HistorySearchBackward.

Domyślnie właściwość HistorySearchCaseSensitive globalnego obiektu PSConsoleReadLineOptions ma wartość False. Przy użyciu tego parametru SwitchParameter ustawia wartość właściwości na True. Aby zmienić wartość właściwości z powrotem, należy określić wartość parametru SwitchParameter w następujący sposób: -HistorySearchCaseSensitive:$False.

Za pomocą następującego polecenia można ustawić wartość właściwości bezpośrednio:

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCursorMovesToEnd

Wskazuje, że kursor przechodzi na końcu poleceń ładowanych z historii przy użyciu wyszukiwania. Gdy ten parametr jest ustawiony na $Falsewartość , kursor pozostaje w położeniu, w którym został naciśnięty strzałki w górę lub w dół.

Domyślnie właściwość HistorySearchCursorMovesToEnd globalnego obiektu PSConsoleReadLineOptions ma wartość False. Za pomocą tego parametru SwitchParameter ustaw wartość właściwości na True. Aby zmienić wartość właściwości z powrotem, należy określić wartość parametru SwitchParameter w następujący sposób: -HistorySearchCursorMovesToEnd:$False.

Za pomocą następującego polecenia można ustawić wartość właściwości bezpośrednio:

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumHistoryCount

Określa maksymalną liczbę poleceń do zapisania w historii elementu PSReadLine .

Historia elementu PSReadLine jest oddzielona od historii programu PowerShell.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumKillRingCount

Określa maksymalną liczbę elementów przechowywanych w pierścieniu zabijania.

Type:Int32
Position:Named
Default value:10
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PredictionSource

Określa źródło elementu PSReadLine, aby uzyskać sugestie predykcyjne.

Prawidłowe wartości:

  • Brak: wyłącz funkcję sugestii predykcyjnej
  • Historia: uzyskiwanie sugestii predykcyjnych tylko z historii
Type:PredictionSource
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PromptText

W przypadku wystąpienia błędu analizy element PSReadLine zmienia część monitu na czerwono. Funkcja PSReadLine analizuje funkcję monitu, aby określić, jak zmienić tylko kolor części monitu. Ta analiza nie jest niezawodna w 100%.

Użyj tej opcji, jeśli funkcja PSReadLine zmienia monit w nieoczekiwany sposób. Uwzględnij wszelkie końcowe odstępy.

Jeśli na przykład funkcja monitu wyglądała jak w poniższym przykładzie:

function prompt { Write-Host -NoNewLine -ForegroundColor Yellow "$pwd"; return "# " }

Następnie ustaw:

Set-PSReadLineOption -PromptText "# "

Type:String[]
Position:Named
Default value:>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowToolTips

W przypadku wyświetlania możliwych uzupełniania etykietki narzędzi są wyświetlane na liście uzupełniania.

Ta opcja jest domyślnie włączona. Ta opcja nie została domyślnie włączona w poprzednich wersjach programu PSReadLine. Aby wyłączyć, ustaw tę opcję na $False.

Domyślnie właściwość ShowToolTips globalnego obiektu PSConsoleReadLineOptions ma wartość True. Przy użyciu tego parametru SwitchParameter ustawia wartość właściwości na True. Aby zmienić wartość właściwości, należy określić wartość parametru SwitchParameter w następujący sposób: -ShowToolTips:$False.

Za pomocą następującego polecenia można ustawić wartość właściwości bezpośrednio:

(Get-PSReadLineOption).ShowToolTips = $False

Type:SwitchParameter
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ViModeChangeHandler

Gdy właściwość ViModeIndicator jest ustawiona na Scriptwartość , udostępniony blok skryptu będzie wywoływany za każdym razem, gdy zmieni się tryb. Blok skryptu jest udostępniany jeden argument typu ViMode.

Ten parametr został wprowadzony w programie PowerShell 7.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ViModeIndicator

Ta opcja ustawia wskazanie wizualizacji dla bieżącego trybu Vi . Tryb wstawiania lub trybu polecenia.

Prawidłowe wartości są następujące:

  • Brak: Nie ma żadnych wskazówek.
  • Monit: monit zmienia kolor.
  • Kursor: kursor zmienia rozmiar.
  • Skrypt: tekst określony przez użytkownika jest drukowany.
Type:ViModeStyle
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WordDelimiters

Określa znaki rozdzielające wyrazy dla funkcji, takich jak ForwardWord lub KillWord.

Type:String
Position:Named
Default value:;:,.[]{}()/\|^&*-=+'"-—―
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

None

Nie można potokować obiektów do Set-PSReadLineOption.

Dane wyjściowe

None

To polecenie cmdlet nie generuje żadnych danych wyjściowych.