Set-PSReadLineOption

Anpassar beteendet för kommandoradsredigering i PSReadLine.

Syntax

Set-PSReadLineOption
   [-EditMode <EditMode>]
   [-ContinuationPrompt <String>]
   [-HistoryNoDuplicates]
   [-AddToHistoryHandler <System.Func`2[System.String,System.Object]>]
   [-CommandValidationHandler <System.Action`1[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>]
   [-PredictionSource <PredictionSource>]
   [-PredictionViewStyle <PredictionViewStyle>]
   [-Colors <Hashtable>]
   [<CommonParameters>]

Description

Cmdleten Set-PSReadLineOption anpassar psReadLine-modulens beteende när du redigerar kommandoraden. Om du vill visa PSReadLine-inställningarna använder du Get-PSReadLineOption.

Exempel

Exempel 1: Ange förgrunds- och bakgrundsfärger

I det här exemplet anges PSReadLine för att visa kommentarstoken med grön förgrundstext i en grå bakgrund. I escape-sekvensen som används i exemplet representerar 32 förgrundsfärgen och 47 representerar bakgrundsfärgen.

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

Du kan välja att endast ange en förgrundstextfärg. Till exempel en ljusgrön förgrundstextfärg för kommentarstoken : "Comment"="`e[92m".

Exempel 2: Ange klockstil

I det här exemplet svarar PSReadLine på fel eller villkor som kräver användaruppmärkning. BellStyle är inställt på att avge ett hörbart pip vid 1221 Hz för 60 ms.

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

Anteckning

Den här funktionen kanske inte fungerar på alla värdar på plattformar.

Exempel 3: Ange flera alternativ

Set-PSReadLineOption kan ange flera alternativ med en hash-tabell.

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

Hash-tabellen $PSReadLineOptions anger nycklar och värden. Set-PSReadLineOption använder nycklar och värden med @PSReadLineOptions för att uppdatera PSReadLine-alternativen .

Du kan visa de nycklar och värden som anger namnet på hashtabellen $PSReadLineOptions på PowerShell-kommandoraden.

Exempel 4: Ange flera färgalternativ

Det här exemplet visar hur du anger fler än ett färgvärde i ett enda kommando.

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

Exempel 5: Ange färgvärden för flera typer

Det här exemplet visar tre olika metoder för hur du anger färgen på token som visas i 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"
}

Exempel 6: Använd ViModeChangeHandler för att visa Ändringar i Vi-läge

Det här exemplet genererar en VT-markörändring som svar på en Ändring i Vi-läge .

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

Funktionen OnViModeChange anger markörens alternativ för Vi-lägena : infoga och kommandot. ViModeChangeHandler använder providern Function: för att referera till OnViModeChange som ett skriptblocksobjekt.

Mer information finns i about_Providers.

Parametrar

-AddToHistoryHandler

Anger en ScriptBlock som styr vilka kommandon som läggs till i PSReadLine-historiken .

ScriptBlock tar emot kommandoraden som indata. Om ScriptBlock returnerar $Trueläggs kommandoraden till i historiken.

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

-AnsiEscapeTimeout

Det här alternativet är specifikt för Windows när indata omdirigeras, till exempel när du kör under tmux eller screen.

Med omdirigerade indata i Windows skickas många nycklar som en sekvens med tecken som börjar med escape-tecknet. Det går inte att skilja mellan ett enda escape-tecken följt av fler tecken och en giltig escape-sekvens.

Antagandet är att terminalen kan skicka tecknen snabbare än en användartyp. PSReadLine väntar på den här tidsgränsen innan den drar slutsatsen att den har fått en fullständig escape-sekvens.

Om du ser slumpmässiga eller oväntade tecken när du skriver kan du justera den här tidsgränsen.

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

-BellStyle

Anger hur PSReadLine svarar på olika fel och tvetydiga villkor.

Giltiga värden är följande:

  • Hörbart: Ett kort pip.
  • Visuellt objekt: Texten blinkar kort.
  • Ingen: Ingen feedback.
Type:BellStyle
Position:Named
Default value:Audible
Accept pipeline input:False
Accept wildcard characters:False

-Colors

Parametern Färger anger olika färger som används av PSReadLine.

Argumentet är en hash-tabell där nycklarna anger vilket element och värdena anger färgen. Mer information finns i about_Hash_Tables.

Färger kan antingen vara ett värde från ConsoleColor, till exempel [ConsoleColor]::Red, eller en giltig ANSI-escape-sekvens. Giltiga escape-sekvenser beror på terminalen. I PowerShell 5.0 är $([char]0x1b)[91mett exempel på en escape-sekvens för röd text . I PowerShell 6 och senare är `e[91msamma escape-sekvens . Du kan ange andra escape-sekvenser, inklusive följande typer:

Två färginställningar har lagts till för att stödja anpassning av ListView i PSReadLine 2.2.0:

  • ListPredictionColor – ange färg för huvudtecknet > och det avslutande källnamnet, t.ex. [History]. Som standard används DarkYellow den som förgrundsfärg.

  • ListPredictionSelectedColor – ange färg för att ange att ett listobjekt har valts. Som standard används DarkBlack den som bakgrundsfärg.

  • 256 färg

  • 24-bitars färg

  • Förgrund, bakgrund eller båda

  • Invertera, fetstil

Mer information om ANSI-färgkoder finns i ANSI-escape-kod i Wikipedia.

De giltiga nycklarna är:

  • ContinuationPrompt: Färgen på fortsättningsprompten.
  • Betoning: Betoningsfärgen. Till exempel matchande text vid sökning i historiken.
  • Fel: Felfärgen. Till exempel i prompten.
  • Markering: Färgen som ska markera menyvalet eller den markerade texten.
  • Standard: Standardtokenfärg.
  • Kommentar: Kommentarstokenfärgen.
  • Nyckelord: Nyckelordets tokenfärg.
  • Sträng: Strängtokenfärgen.
  • Operator: Operatorns tokenfärg.
  • Variabel: Variabeltokens färg.
  • Kommando: Kommandotokens färg.
  • Parameter: Parametertokenfärgen.
  • Typ: Typtokenfärg.
  • Tal: Färgen på nummertoken.
  • Medlem: Tokenfärg för medlemsnamn.
  • InlinePrediction: Färgen på den infogade vyn för förutsägelseförslaget.
Type:Hashtable
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-CommandValidationHandler

Anger en ScriptBlock som anropas från ValidateAndAcceptLine. Om ett undantag utlöses misslyckas verifieringen och felet rapporteras.

Innan du utlöser ett undantag kan valideringshanteraren placera markören vid felpunkten för att göra det enklare att åtgärda. En valideringshanterare kan också ändra kommandoraden, till exempel för att korrigera vanliga typografiska fel.

ValidateAndAcceptLine används för att undvika att röra historiken med kommandon som inte kan fungera.

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

-CompletionQueryItems

Anger det maximala antalet slutförandeobjekt som visas utan att fråga.

Om antalet objekt som ska visas är större än det här värdet uppmanar PSReadLineja/nej innan slutförandeobjekten visas.

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

-ContinuationPrompt

Anger strängen som visas i början av efterföljande rader när indata för flera rader anges. Standardvärdet är dubbelt större än tecken (>>). En tom sträng är giltig.

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

-DingDuration

Anger varaktigheten för pipet när BellStyle är inställt på Audible.

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

-DingTone

Anger tonen i Hertz (Hz) för pipet när BellStyle är inställt på Audible.

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

-EditMode

Anger redigeringsläget för kommandoraden. Med den här parametern återställs alla nyckelbindningar som anges av Set-PSReadLineKeyHandler.

Giltiga värden är följande:

  • Windows: Nyckelbindningar emulerar PowerShell, cmd och Visual Studio.
  • Emacs: Nyckelbindningar emulerar Bash eller Emacs.
  • Vi: Nyckelbindningar emulerar Vi.

Använd Get-PSReadLineKeyHandler för att se nyckelbindningar för den för närvarande konfigurerade EditMode.

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

-ExtraPromptLineCount

Anger antalet extra rader.

Om din fråga sträcker sig över mer än en rad anger du ett värde för den här parametern. Använd det här alternativet om du vill att extra rader ska vara tillgängliga när PSReadLine visar uppmaningen när vissa utdata har visats. PSReadLine returnerar till exempel en lista över slutföranden.

Det här alternativet behövs mindre än i tidigare versioner av PSReadLine, men är användbart när InvokePrompt funktionen används.

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

-HistoryNoDuplicates

Det här alternativet styr återkallningsbeteendet. Dubblettkommandon läggs fortfarande till i historikfilen. När det här alternativet har angetts visas endast det senaste anropet när kommandon återkallas. Upprepade kommandon läggs till i historiken för att bevara ordningen under återkallandet. Du vill dock vanligtvis inte se kommandot flera gånger när du återkallar eller söker i historiken.

Som standard är egenskapen HistoryNoDuplicates för det globala OBJEKTET PSConsoleReadLineOptions inställt på True. Med den här SwitchParametern anges egenskapsvärdet till True. Om du vill ändra egenskapsvärdet måste du ange värdet för SwitchParameter enligt följande: -HistoryNoDuplicates:$False.

Med följande kommando kan du ange egenskapsvärdet direkt:

(Get-PSReadLineOption).HistoryNoDuplicates = $False

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

-HistorySavePath

Anger sökvägen till filen där historiken sparas. Datorer som kör Windows- eller icke-Windows-plattformar lagrar filen på olika platser. Filnamnet lagras i en variabel $($Host.Name)_history.txt, till exempel ConsoleHost_history.txt.

Om du inte använder den här parametern är standardsökvägen följande:

Windows

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

icke-Windows

  • $env:XDG_DATA_HOME/powershell/PSReadLine/$($Host.Name)_history.txt
  • $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 $HOME/.local/share/powershell/PSReadLine on non-Windows platforms
Accept pipeline input:False
Accept wildcard characters:False

-HistorySaveStyle

Anger hur PSReadLine sparar historik.

Giltiga värden är följande:

  • SaveIncrementally: Spara historik när varje kommando har körts och dela över flera instanser av PowerShell.
  • SaveAtExit: Lägg till historikfil när PowerShell avslutas.
  • SaveNothing: Använd inte en historikfil.
Type:HistorySaveStyle
Position:Named
Default value:SaveIncrementally
Accept pipeline input:False
Accept wildcard characters:False

-HistorySearchCaseSensitive

Anger att historiksökning är skiftlägeskänsligt i funktioner som ReverseSearchHistory eller HistorySearchBackward.

Som standard är egenskapen HistorySearchCaseSensitive för det globala OBJEKTET PSConsoleReadLineOptions inställd på False. Med den här SwitchParametern anges egenskapsvärdet till True. Om du vill ändra tillbaka egenskapsvärdet måste du ange värdet för SwitchParameter enligt följande: -HistorySearchCaseSensitive:$False.

Med följande kommando kan du ange egenskapsvärdet direkt:

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

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

-HistorySearchCursorMovesToEnd

Anger att markören flyttas till slutet av kommandon som du läser in från historiken med hjälp av en sökning. När den här parametern är inställd $Falsepå förblir markören kvar på den position den var när du tryckte på uppåt- eller nedåtpilarna.

Som standard är egenskapen HistorySearchCursorMovesToEnd för det globala OBJEKTET PSConsoleReadLineOptions inställt på False. Med den här SwitchParametern anger du egenskapsvärdet till True. Om du vill ändra tillbaka egenskapsvärdet måste du ange värdet för SwitchParameter enligt följande: -HistorySearchCursorMovesToEnd:$False.

Med följande kommando kan du ange egenskapsvärdet direkt:

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

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

-MaximumHistoryCount

Anger det maximala antalet kommandon som ska sparas i PSReadLine-historiken .

PSReadLine-historiken är separat från PowerShell-historiken.

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

-MaximumKillRingCount

Anger det maximala antalet objekt som lagras i dödsringen.

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

-PredictionSource

Anger källan för PSReadLine för att få förutsägelseförslag.

Giltiga värden är:

  • Ingen – inaktivera funktionen predictive IntelliSense (standard).
  • Historik – aktivera funktionen predictive IntelliSense och använd PSReadLine-historiken som den enda källan.
  • Plugin - aktivera funktionen predictive IntelliSense och använd plugin-program (CommandPrediction) som enda källa. Det här värdet har lagts till i PSReadLine 2.2.0
  • HistoryAndPlugin – aktivera funktionen predictive IntelliSense och använd både historik och plugin-program som källor. Det här värdet har lagts till i PSReadLine 2.2.0
Type:Microsoft.PowerShell.PredictionSource
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-PredictionViewStyle

Anger formatmallen för visning av förutsägelsetexten. Standardvärdet är InlineView.

  • InlineView – stilen som finns i dag, ungefär som i fish shell och zsh. (standard)
  • ListView – förslag återges i en listruta och användarna kan välja att använda UpArrow och DownArrow.

Den här parametern lades till i PSReadLine 2.2.0

Type:Microsoft.PowerShell.PredictionViewStyle
Position:Named
Default value:InlineView
Accept pipeline input:False
Accept wildcard characters:False

-PromptText

När det uppstår ett parsningsfel ändrar PSReadLine en del av den röda prompten. PSReadLine analyserar din promptfunktion för att avgöra hur du bara ändrar färgen på en del av prompten. Den här analysen är inte 100 % tillförlitlig.

Använd det här alternativet om PSReadLine ändrar din fråga på oväntade sätt. Inkludera eventuella avslutande blanksteg.

Om promptfunktionen till exempel ser ut som i följande exempel:

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

Ange sedan:

Set-PSReadLineOption -PromptText "# "

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

-ShowToolTips

När du visar möjliga slutföranden visas knappbeskrivningar i listan över slutföranden.

Det här alternativet är aktiverat som standard. Det här alternativet aktiverades inte som standard i tidigare versioner av PSReadLine. Om du vill inaktivera anger du det här alternativet till $False.

Som standard är egenskapen ShowToolTips för det globala OBJEKTET PSConsoleReadLineOptions inställt på True. Med den här SwitchParametern anges egenskapsvärdet till True. Om du vill ändra egenskapsvärdet måste du ange värdet för SwitchParameter enligt följande: -ShowToolTips:$False.

Med följande kommando kan du ange egenskapsvärdet direkt:

(Get-PSReadLineOption).ShowToolTips = $False

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

-ViModeChangeHandler

När ViModeIndicator är inställt på Scriptanropas det angivna skriptblocket varje gång läget ändras. Skriptblocket anges som ett argument av typen ViMode.

Den här parametern introducerades i PowerShell 7.

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

-ViModeIndicator

Det här alternativet anger den visuella indikationen för aktuellt Vi-läge . Antingen infogningsläge eller kommandoläge.

Giltiga värden är följande:

  • Ingen: Det finns ingen indikation.
  • Fråga: Prompten ändrar färg.
  • Markör: Markören ändrar storlek.
  • Skript: Användardefinerad text skrivs ut.
Type:ViModeStyle
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WordDelimiters

Anger de tecken som avgränsar ord för funktioner som ForwardWord eller KillWord.

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

Indata

None

Du kan inte skicka objekt till Set-PSReadLineOption.

Utdata

None

Den här cmdleten genererar inga utdata.