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 $False
wartość , 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 Script
wartość , 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.