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 beteendet för PSReadLine-modulen när du redigerar kommandoraden. Om du vill visa PSReadLine-inställningarna använder du Get-PSReadLineOption.

De alternativ som anges av det här kommandot gäller endast för den aktuella sessionen. Om du vill spara alla alternativ lägger du till dem i ett profilskript. Mer information finns i about_Profiles och Anpassa din gränssnittsmiljö.

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 textfärg för förgrunden. Till exempel en ljusgrön textfärg för förgrund för kommentarstoken: "Comment"="`e[92m".

Exempel 2: Ange klockformat

I det här exemplet svarar PSReadLine på fel eller villkor som kräver användaruppmärksamhet. 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

Kommentar

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 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öralternativen för Vi-lägena : insert och command. ViModeChangeHandler använder providern Function: för att referera till OnViModeChange som ett skriptblockobjekt.

Mer information finns i about_Providers.

Exempel 7: Använd HistoryHandler för att filtrera kommandon som lagts till i historiken

I följande exempel visas hur du använder AddToHistoryHandler för att förhindra att git-kommandon sparas i historiken.

$ScriptBlock = {
    Param([string]$line)

    if ($line -match "^git") {
        return $false
    } else {
        return $true
    }
}

Set-PSReadLineOption -AddToHistoryHandler $ScriptBlock

Scriptblock returnerar $false om kommandot började med git. Detta har samma effekt som när SkipAddingaddToHistory-uppräkningen returneras. Om kommandot inte börjar med gitreturnerar $true hanteraren och PSReadLine sparar kommandot i historiken.

Exempel 8: Använd CommandValidationHandler för att verifiera ett kommando innan det körs

Det här exemplet visar hur du använder parametern CommandValidationHandler för att köra ett verifieringskommando innan det körs. Exemplet söker specifikt efter kommandot git med underkommandot cmt och ersätter det med det fullständiga namnet commit. På så sätt kan du skapa korta alias för underkommandon.

# Load the namespace so you can use the [CommandAst] object type
using namespace System.Management.Automation.Language

Set-PSReadLineOption -CommandValidationHandler {
    param([CommandAst]$CommandAst)

    switch ($CommandAst.GetCommandName()) {
        'git' {
            $gitCmd = $CommandAst.CommandElements[1].Extent
            switch ($gitCmd.Text) {
                'cmt' {
                    [Microsoft.PowerShell.PSConsoleReadLine]::Replace(
                        $gitCmd.StartOffset, $gitCmd.EndOffset - $gitCmd.StartOffset, 'commit')
                }
            }
        }
    }
}
# This checks the validation script when you hit enter
Set-PSReadLineKeyHandler -Chord Enter -Function ValidateAndAcceptLine

Exempel 9: Använda parametern PromptText

När det uppstår ett parsfel ändrar PSReadLine en del av den röda prompten. Parametern PromptText talar om för PSReadLine att den del av promptsträngen som ska bli röd.

I följande exempel skapas till exempel en uppmaning som innehåller den aktuella sökvägen följt av tecknet större än (>) och ett blanksteg.

function prompt { "PS $pwd> " }`
Set-PSReadLineOption -PromptText '> ' # change the '>' character red
Set-PSReadLineOption -PromptText '> ', 'X ' # replace the '>' character with a red 'X'

Den första strängen är den del av promptsträngen som du vill göra röd när det finns ett parsfel. Den andra strängen är en alternativ sträng att använda för när det finns ett parsfel.

Parametrar

-AddToHistoryHandler

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

ScriptBlock tar emot kommandoraden som indata.

ScripBlock bör returnera en medlem i uppräkningen AddToHistoryOption, strängnamnet för en av dessa medlemmar eller ett booleskt värde. I listan nedan beskrivs möjliga värden och deras effekter.

  • MemoryAndFile – Lägg till kommandot i historikfilen och den aktuella sessionen.
  • MemoryOnly – Lägg till kommandot i historiken endast för den aktuella sessionen.
  • SkipAdding – Lägg inte till kommandot i historikfilen för den aktuella sessionen.
  • $false – Samma som om värdet var SkipAdding.
  • $true – Samma som om värdet var MemoryAndFile.
Type:Func<T,TResult>[System.String,System.Object]
Position:Named
Default value:None
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-BellStyle

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

De giltiga värdena är följande:

  • Hörbart: Ett kort pip.
  • Visuellt objekt: Texten blinkar kort.
  • Ingen: Ingen feedback.
Type:BellStyle
Position:Named
Default value:Audible
Required:False
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 elementen och värdena anger färgen. Mer information finns i about_Hash_Tables.

Färger kan vara antingen 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å 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 det inledande > tecknet och det avslutande källnamnet, till exempel [History]. Som standard används DarkYellow den som förgrundsfärg.

  • ListPredictionSelectedColor – ange färg för att ange att ett listobjekt är markerat. 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 Wikipedia-artikeln ANSI-escape-kod.

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ärgen.
  • Kommentar: Kommentarstokens färg.
  • Nyckelord: Färgen på nyckelordstoken.
  • Sträng: Strängtokens färg.
  • Operator: Operatortokens färg.
  • Variabel: Variabeltokens färg.
  • Kommando: Kommandotokens färg.
  • Parameter: Parametertokens färg.
  • Typ: Typtokenfärg.
  • Tal: Nummertokens färg.
  • Medlem: Tokenfärgen för medlemsnamn.
  • InlinePrediction: Färgen för den infogade vyn för förutsägelseförslaget.
  • ListPrediction: Färgen för det inledande > tecknet och förutsägelsekällans namn.
  • ListPredictionSelected: Färgen för den valda förutsägelsen i listvyn.
Type:Hashtable
Position:Named
Default value:None
Required:False
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 för att korrigera vanliga typografiska fel.

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

Type:Action<T>[CommandAst]
Position:Named
Default value:None
Required:False
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 PSReadLine ja/nej innan slutförandeobjekten visas.

Type:Int32
Position:Named
Default value:100
Required:False
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:>>
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DingTone

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

Type:Int32
Position:Named
Default value:1221
Required:False
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.

De giltiga värdena ä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 nyckelbindningarna för den för närvarande konfigurerade EditMode.

Type:EditMode
Position:Named
Default value:Windows
Required:False
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 när du vill att extra rader ska vara tillgängliga när PSReadLine visar kommandotolken efter att ha visat vissa utdata. 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
Required:False
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. Om du vill ändra egenskapsvärdet måste du ange värdet för SwitchParameter enligt följande: -HistoryNoDuplicates:$False. Du kan återgå till genom att True bara använda SwitchParameter, -HistoryNoDuplicates.

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

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Type:SwitchParameter
Position:Named
Default value:False
Required: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
Required:False
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.

Kommentar

Om du anger HistorySaveStyle till SaveNothing och sedan ställer in det på SaveIncrementally senare i samma session sparar PSReadLine alla kommandon som tidigare kördes i sessionen.

Type:HistorySaveStyle
Position:Named
Default value:SaveIncrementally
Required:False
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ällt 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
Required: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
Required: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
Required:False
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
Required:False
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 prediktiv IntelliSense (standard).
  • Historik – aktivera funktionen prediktiv IntelliSense och använd PSReadLine-historiken som den enda källan.
  • Plugin - aktivera funktionen predictive IntelliSense och använd plugin-program (CommandPrediction) som den enda källan. Det här värdet lades 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 lades till i PSReadLine 2.2.0
Type:Microsoft.PowerShell.PredictionSource
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PredictionViewStyle

Anger formatmallen för visning av prediktiv text. Standardvärdet är InlineView.

  • InlineView – stilen som finns idag, 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PromptText

Den här parametern anger värdet för egenskapen PromptText . Standardvärdet är "> ".

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. Ta med eventuella avslutande blanksteg.

Värdet för den här parametern kan vara en enskild sträng eller en matris med två strängar. Den första strängen är den del av promptsträngen som du vill ändra till röd när det finns ett parsfel. Den andra strängen är en alternativ sträng att använda för när det finns ett parsfel.

Type:String[]
Position:Named
Default value:>
Required:False
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 har inte aktiverats 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
Required:False
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 tillhandahålls ett argument av typen ViMode.

Den här parametern introducerades i PowerShell 7.

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

-ViModeIndicator

Det här alternativet anger den visuella indikatorn för det aktuella Vi-läget . Antingen infogningsläge eller kommandoläge.

De giltiga värdena är följande:

  • Ingen: Det finns ingen indikator.
  • Fråga: Kommandotolken ändrar färg.
  • Markör: Markören ändrar storlek.
  • Skript: Användarangiven text skrivs ut.
Type:ViModeStyle
Position:Named
Default value:None
Required:False
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:;:,.[]{}()/\|^&*-=+'"---
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Indata

None

Du kan inte skicka objekt till den här cmdleten.

Utdata

None

Den här cmdleten returnerar inga utdata.