Dela via


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 modulen PSReadLine när du redigerar kommandoraden. Om du vill visa inställningarna för PSReadLine- 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 shell-miljön.

Exempel

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

I det här exemplet anges PSReadLine- för att visa token Kommentar 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 Kommentar token: "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älld på att avge ett hörbart pip vid 1221 Hz för 60 ms.

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

Not

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

I den $PSReadLineOptions hashtabellen anges nycklar och värden. Set-PSReadLineOption använder nycklar och värden med @PSReadLineOptions för att uppdatera PSReadLine- alternativ.

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

I det här exemplet genereras en VT-utrymning av markören 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 lägena Vi: infoga och kommando. ViModeChangeHandler använderFunction:-providern 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

Skriptblocket returnerar $false om kommandot startade med git. Detta har samma effekt som att returnera SkipAddingAddToHistory- uppräkning. Om kommandot inte börjar med gitreturnerar hanteraren $true 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 kommandotolken röd. Parametern PromptText anger PSReadLine 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- historik.

ScriptBlock- tar emot kommandoraden som indata.

ScripBlock- ska returnera en medlem i AddToHistoryOption uppräkning, 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.
Typ:Func<T,TResult>[System.String,System.Object]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-AnsiEscapeTimeout

Det här alternativet är specifikt för Windows när indata omdirigeras, till exempel när de körs 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 du 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.

Typ:Int32
Position:Named
Standardvärde:100
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-BellStyle

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

De giltiga värdena är följande:

  • Hörbar: Ett kort pip.
  • Visual: Texten blinkar kort.
  • Ingen: Ingen feedback.
Typ:BellStyle
Position:Named
Standardvärde:Audible
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-Colors

Parametern Colors 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 antingen vara ett värde från ConsoleColor, till exempel [ConsoleColor]::Redeller en giltig ANSI-escape-sekvens. Giltiga escape-sekvenser beror på terminalen. I PowerShell 5.0 är ett exempel på en escape-sekvens för röd text $([char]0x1b)[91m. I PowerShell 6 och senare är samma escape-sekvens `e[91m. 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 som förgrundsfärg.

  • ListPredictionSelectedColor – ange färg för att ange att ett listobjekt är markerat. Som standard används DarkBlack 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 code.

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 för att markera menymarkeringen eller markerad text.
  • Standard: Standardtokenfärgen.
  • Kommentar: Kommentartokens färg.
  • Nyckelord: Nyckelordets tokenfärg.
  • String: Strängtokenfärgen.
  • Operator: Operatortokenfärgen.
  • Variabel: Variabeltokens färg.
  • Kommando: Kommandotokens färg.
  • Parameter: Parametertokenfärgen.
  • Typ: Typtokenfärg.
  • Number: Den numeriska tokenfärgen.
  • Medlems-: Tokenfärg för medlemsnamn.
  • InlinePrediction: Färgen på 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.
Typ:Hashtable
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:Action<T>[CommandAst]
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:Int32
Position:Named
Standardvärde:100
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:String
Position:Named
Standardvärde:>>
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DingDuration

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

Typ:Int32
Position:Named
Standardvärde:50ms
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-DingTone

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

Typ:Int32
Position:Named
Standardvärde:1221
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:EditMode
Position:Named
Standardvärde:Windows
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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 utdata. Till exempel returnerar PSReadLine en lista över slutföranden.

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

Typ:Int32
Position:Named
Standardvärde:0
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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 egenskapen HistoryNoDuplicates för det globala PSConsoleReadLineOptions-objektet till . Om du vill ändra egenskapsvärdet måste du ange värdet för SwitchParameter enligt följande: -HistoryNoDuplicates:$False. Du kan återgå till True genom att bara använda SwitchParameter, -HistoryNoDuplicates.

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

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Typ:SwitchParameter
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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
Typ:String
Position:Named
Standardvärde: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
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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: Fil med tilläggshistorik när PowerShell avslutas.
  • SaveNothing: Använd inte en historikfil.

Not

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

Typ:HistorySaveStyle
Position:Named
Standardvärde:SaveIncrementally
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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 PSConsoleReadLineOptions-objektet inställt på False. Med den här SwitchParameter anger 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

Typ:SwitchParameter
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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 på $Falsefö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 PSConsoleReadLineOptions-objektet inställt på False. Använd den här SwitchParameter ange 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

Typ:SwitchParameter
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-MaximumHistoryCount

Anger det maximala antalet kommandon som ska sparas i PSReadLine historik.

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

Typ:Int32
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-MaximumKillRingCount

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

Typ:Int32
Position:Named
Standardvärde:10
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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).
  • History – 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 den enda källan. Det här värdet lades till i PSReadLine 2.2.0
  • HistoryAndPlugin – aktivera funktionen predictive IntelliSense och använda både historik och plugin-program som källor. Det här värdet lades till i PSReadLine 2.2.0
Typ:Microsoft.PowerShell.PredictionSource
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-PredictionViewStyle

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

  • InlineView - stilen som finns idag, liknande den 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

Typ:Microsoft.PowerShell.PredictionViewStyle
Position:Named
Standardvärde:InlineView
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:String[]
Position:Named
Standardvärde:>
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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 PSConsoleReadLineOptions-objektet inställt på True. Med den här SwitchParameter anger 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

Typ:SwitchParameter
Position:Named
Standardvärde:True
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.

Typ:ScriptBlock
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-ViModeIndicator

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

De giltiga värdena är följande:

  • Ingen: Det finns ingen indikator.
  • Fråga: Frågan ändrar färg.
  • cursor: Markören ändrar storlek.
  • Script: Användarangiven text skrivs ut.
Typ:ViModeStyle
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-WordDelimiters

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

Typ:String
Position:Named
Standardvärde:;:,.[]{}()/\|^&*-=+'"---
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

None

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

Utdata

None

Den här cmdleten returnerar inga utdata.