Partager via


Set-PSReadLineOption

Personnalise le comportement de modification de ligne de commande dans PSReadLine.

Syntaxe

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>]
   [<CommonParameters>]

Description

L’applet Set-PSReadLineOption de commande personnalise le comportement du module PSReadLine lorsque vous modifiez la ligne de commande. Pour afficher les paramètres PSReadLine , utilisez Get-PSReadLineOption.

Les options définies par cette commande s’appliquent uniquement à la session active. Pour conserver les options, ajoutez-les à un script de profil. Pour plus d’informations, consultez about_Profiles et personnaliser votre environnement shell.

Exemples

Exemple 1 : Définir les couleurs de premier plan et d’arrière-plan

Cet exemple montre comment définir PSReadLine pour afficher le jeton de commentaire avec du texte de premier plan vert sur un arrière-plan gris. Dans la séquence d’échappement utilisée dans l’exemple, 32 représente la couleur de premier plan et 47 représente la couleur d’arrière-plan.

Set-PSReadLineOption -Colors @{ "Comment"="$([char]0x1b)[32;47m" }

Vous pouvez choisir de définir uniquement une couleur de texte de premier plan. Par exemple, une couleur de texte de premier plan verte claire pour le jeton de commentaire : "Comment"="$([char]0x1b)[92m".

Exemple 2 : Définir le style cloche

Dans cet exemple, PSReadLine répond aux erreurs ou aux conditions qui nécessitent une attention de l’utilisateur. BellStyle est défini pour émettre un bip audible à 1221 Hz pour 60 ms.

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

Remarque

Cette fonctionnalité peut ne pas fonctionner dans tous les hôtes sur les plateformes.

Exemple 3 : Définir plusieurs options

Set-PSReadLineOption peut définir plusieurs options avec une table de hachage.

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

La $PSReadLineOptions table de hachage définit les clés et les valeurs. Set-PSReadLineOption utilise les clés et les valeurs avec @PSReadLineOptions utilisant pour mettre à jour les options PSReadLine .

Vous pouvez afficher les clés et les valeurs entrant le nom de la table de hachage, $PSReadLineOptions sur la ligne de commande PowerShell.

Exemple 4 : Définir plusieurs options de couleur

Cet exemple montre comment définir plusieurs valeurs de couleur dans une seule commande.

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

Exemple 5 : Définir des valeurs de couleur pour plusieurs types

Cet exemple montre trois méthodes différentes pour définir la couleur des jetons affichés dans 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"
}

Exemple 6 : Utiliser ViModeChangeHandler pour afficher les modifications du mode Vi

Cet exemple émet un changement de curseur d’échappement VT en réponse à une modification en mode Vi .

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

La fonction OnViModeChange définit les options de curseur pour les modes Vi : insertion et commande. ViModeChangeHandler utilise le Function: fournisseur pour référencer OnViModeChange en tant qu’objet de bloc de script.

Pour plus d’informations, consultez about_Providers.

Exemple 7 : Utiliser HistoryHandler pour filtrer les commandes ajoutées à l’historique

L’exemple suivant montre comment utiliser la AddToHistoryHandler commande pour empêcher l’enregistrement de commandes Git dans l’historique.

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

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

Set-PSReadLineOption -AddToHistoryHandler $ScriptBlock

Le scriptblock retourne $false si la commande a démarré avec git. Cela a le même effet que le renvoi de l’énumération SkipAdding AddToHistory . Si la commande ne commence gitpas par , le gestionnaire retourne $true et PSReadLine enregistre la commande dans l’historique.

Exemple 8 : Utiliser CommandValidationHandler pour valider une commande avant son exécution

Cet exemple montre comment utiliser le paramètre CommandValidationHandler pour exécuter une commande de validation avant son exécution. L’exemple vérifie spécifiquement la commande git avec la sous-commande cmt et remplace celle-ci par le nom commitcomplet. De cette façon, vous pouvez créer des alias abrégés pour les sous-commandes.

# 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

Exemple 9 : Utilisation du paramètre PromptText

En cas d’erreur d’analyse, PSReadLine modifie une partie de l’invite rouge. Le paramètre PromptText indique à PSReadLine que la partie de la chaîne d’invite doit être rouge.

Par exemple, l’exemple suivant crée une invite qui contient le chemin actuel suivi du caractère supérieur à (>) et d’un espace.

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

La première chaîne est la partie de votre chaîne d’invite que vous souhaitez faire rouge lorsqu’il existe une erreur d’analyse. La deuxième chaîne est une autre chaîne à utiliser lorsqu’il existe une erreur d’analyse.

Paramètres

-AddToHistoryHandler

Spécifie un ScriptBlock qui contrôle la façon dont les commandes sont ajoutées à l’historique PSReadLine .

ScriptBlock reçoit la ligne de commande comme entrée.

ScripBlock doit retourner un membre de l’énumération AddToHistoryOption, le nom de chaîne de l’un de ces membres ou une valeur booléenne. La liste ci-dessous décrit les valeurs possibles et leurs effets.

  • MemoryAndFile - Ajoutez la commande au fichier d’historique et à la session active.
  • MemoryOnly - Ajoutez la commande à l’historique de la session active uniquement.
  • SkipAdding - N’ajoutez pas la commande au fichier d’historique de la session active.
  • $false - Identique à si la valeur était SkipAdding.
  • $true - Identique à si la valeur était MemoryAndFile.
Type:Func<T,TResult>[System.String,System.Object]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-AnsiEscapeTimeout

Cette option est spécifique à Windows lorsque l’entrée est redirigée, par exemple lors de l’exécution sous tmux ou screen.

Avec l’entrée redirigée sur Windows, de nombreuses clés sont envoyées sous la forme d’une séquence de caractères commençant par le caractère d’échappement. Il est impossible de distinguer un caractère d’échappement unique suivi de caractères supplémentaires et d’une séquence d’échappement valide.

L’hypothèse est que le terminal peut envoyer les caractères plus rapidement qu’un type d’utilisateur. PSReadLine attend ce délai avant de conclure qu’il a reçu une séquence d’échappement complète.

Si vous voyez des caractères aléatoires ou inattendus lorsque vous tapez, vous pouvez ajuster ce délai d’expiration.

Type:Int32
Position:Named
Valeur par défaut:100
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-BellStyle

Spécifie comment PSReadLine répond à diverses conditions d’erreur et ambiguës.

Les valeurs valides sont les suivantes :

  • Audible : Un petit bip.
  • Visuel : le texte clignote brièvement.
  • Aucun : aucun commentaire.
Type:BellStyle
Position:Named
Valeur par défaut:Audible
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Colors

Le paramètre Colors spécifie différentes couleurs utilisées par PSReadLine.

L’argument est une table de hachage où les clés spécifient les éléments et les valeurs spécifient la couleur. Pour plus d’informations, consultez about_Hash_Tables.

Les couleurs peuvent être une valeur de ConsoleColor, par exemple [ConsoleColor]::Red, ou une séquence d’échappement ANSI valide. Les séquences d’échappement valides dépendent de votre terminal. Dans PowerShell 5.0, un exemple de séquence d’échappement pour le texte rouge est $([char]0x1b)[91m. Dans PowerShell 6 et versions ultérieures, la même séquence d’échappement est `e[91m. Vous pouvez spécifier d’autres séquences d’échappement, notamment les types suivants :

  • 256 couleurs
  • Couleur 24 bits
  • Premier plan, arrière-plan ou les deux
  • Inverse, gras

Pour plus d’informations sur les codes de couleur ANSI, consultez l’article Wikipédia sur le code d’échappement ANSI.

Les clés valides sont les suivantes :

  • ContinuationPrompt : couleur de l’invite de continuation.
  • Accentuation : couleur d’accentuation. Par exemple, le texte correspondant lors de la recherche dans l’historique.
  • Erreur : couleur d’erreur. Par exemple, dans l’invite.
  • Sélection : couleur pour mettre en surbrillance la sélection du menu ou le texte sélectionné.
  • Valeur par défaut : couleur de jeton par défaut.
  • Commentaire : couleur du jeton de commentaire.
  • Mot clé : couleur du jeton de mot clé.
  • Chaîne : couleur du jeton de chaîne.
  • Opérateur : couleur du jeton d’opérateur.
  • Variable : couleur du jeton de variable.
  • Commande : couleur du jeton de commande.
  • Paramètre : couleur du jeton de paramètre.
  • Type : couleur du jeton de type.
  • Nombre : couleur du jeton de nombre.
  • Membre : couleur du jeton de nom de membre.
Type:Hashtable
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-CommandValidationHandler

Spécifie un ScriptBlock appelé à partir de ValidateAndAcceptLine. Si une exception est levée, la validation échoue et l’erreur est signalée.

Avant de lever une exception, le gestionnaire de validation peut placer le curseur au point de l’erreur pour faciliter la correction. Un gestionnaire de validation peut également modifier la ligne de commande pour corriger les erreurs typographiques courantes.

ValidateAndAcceptLine est utilisé pour éviter d’encombrer votre historique avec des commandes qui ne peuvent pas fonctionner.

Type:Action<T>[CommandAst]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-CompletionQueryItems

Spécifie le nombre maximal d’éléments d’achèvement affichés sans invite.

Si le nombre d’éléments à afficher est supérieur à cette valeur, PSReadLine invite oui/non avant d’afficher les éléments d’achèvement.

Type:Int32
Position:Named
Valeur par défaut:100
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ContinuationPrompt

Spécifie la chaîne affichée au début des lignes suivantes lorsque l’entrée multiligne est entrée. La valeur par défaut est supérieure à celle des signes (>>). Une chaîne vide est valide.

Type:String
Position:Named
Valeur par défaut:>>
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DingDuration

Spécifie la durée du bip lorsque BellStyle est défini sur Audible.

Type:Int32
Position:Named
Valeur par défaut:50ms
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DingTone

Spécifie la tonalité en Hertz (Hz) du bip lorsque BellStyle est défini sur Audible.

Type:Int32
Position:Named
Valeur par défaut:1221
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-EditMode

Spécifie le mode d’édition de ligne de commande. L’utilisation de ce paramètre réinitialise toutes les liaisons de clé définies par Set-PSReadLineKeyHandler.

Les valeurs valides sont les suivantes :

  • Windows : les liaisons de clés émulent PowerShell, cmd et Visual Studio.
  • Emacs : les liaisons de clé émulent Bash ou Emacs.
  • Vi : Les liaisons de clé émulent Vi.

Permet Get-PSReadLineKeyHandler d’afficher les liaisons de clé pour le EditMode actuellement configuré.

Type:EditMode
Position:Named
Valeur par défaut:Windows
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ExtraPromptLineCount

Spécifie le nombre de lignes supplémentaires.

Si votre invite s’étend sur plusieurs lignes, spécifiez une valeur pour ce paramètre. Utilisez cette option lorsque vous souhaitez que des lignes supplémentaires soient disponibles lorsque PSReadLine affiche l’invite après avoir affiché une sortie. Par exemple, PSReadLine retourne une liste d’achèvements.

Cette option est nécessaire moins que dans les versions précédentes de PSReadLine, mais elle est utile lorsque la InvokePrompt fonction est utilisée.

Type:Int32
Position:Named
Valeur par défaut:0
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HistoryNoDuplicates

Cette option contrôle le comportement de rappel. Les commandes en double sont toujours ajoutées au fichier d’historique. Lorsque cette option est définie, seul l’appel le plus récent s’affiche lors du rappel des commandes. Les commandes répétées sont ajoutées à l’historique pour conserver l’ordre pendant le rappel. Toutefois, vous ne souhaitez généralement pas voir la commande plusieurs fois lors du rappel ou de la recherche de l’historique.

Par défaut, la propriété HistoryNoDuplicates de l’objet PSConsoleReadLineOptions global est définie Truesur . Pour modifier la valeur de la propriété, vous devez spécifier la valeur de SwitchParameter comme suit : -HistoryNoDuplicates:$False. Vous pouvez revenir à True l’aide uniquement de SwitchParameter. -HistoryNoDuplicates

À l’aide de la commande suivante, vous pouvez définir la valeur de la propriété directement :

(Get-PSReadLineOption).HistoryNoDuplicates = $False

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HistorySavePath

Spécifie le chemin d’accès au fichier dans lequel l’historique est enregistré. Les ordinateurs exécutant des plateformes Windows ou non-Windows stockent le fichier à différents emplacements. Le nom de fichier est stocké dans une variable $($Host.Name)_history.txt, par exemple ConsoleHost_history.txt.

Si vous n’utilisez pas ce paramètre, le chemin d’accès par défaut est :

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

Type:String
Position:Named
Valeur par défaut: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
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HistorySaveStyle

Spécifie comment PSReadLine enregistre l’historique.

Les valeurs valides sont les suivantes :

  • SaveIncrementally: Enregistrez l’historique après l’exécution de chaque commande et partagez-le sur plusieurs instances de PowerShell.
  • SaveAtExit: ajouter un fichier d’historique lorsque PowerShell se ferme.
  • SaveNothing: n’utilisez pas de fichier d’historique.

Remarque

Si vous définissez HistorySaveStyle SaveNothing sur et que vous le définissez SaveIncrementally ultérieurement dans la même session, PSReadLine enregistre toutes les commandes précédemment exécutées dans la session.

Type:HistorySaveStyle
Position:Named
Valeur par défaut:SaveIncrementally
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HistorySearchCaseSensitive

Spécifie que la recherche d’historique respecte la casse dans les fonctions telles que ReverseSearchHistory ou HistorySearchBackward.

Par défaut, la propriété HistorySearchCaseSensitive de l’objet PSConsoleReadLineOptions global est définie Falsesur . L’utilisation de ce SwitchParameter définit la valeur de la propriété sur True. Pour remplacer la valeur de la propriété, vous devez spécifier la valeur de SwitchParameter comme suit : -HistorySearchCaseSensitive:$False.

À l’aide de la commande suivante, vous pouvez définir la valeur de la propriété directement :

(Get-PSReadLineOption).HistorySearchCaseSensitive = $False

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HistorySearchCursorMovesToEnd

Indique que le curseur passe à la fin des commandes que vous chargez à partir de l’historique à l’aide d’une recherche. Lorsque ce paramètre est défini $Falsesur , le curseur reste à la position pendant laquelle vous avez appuyé sur les flèches vers le haut ou vers le bas.

Par défaut, la propriété HistorySearchCursorMovesToEnd de l’objet PSConsoleReadLineOptions global est définie Falsesur . À l’aide de ce SwitchParameter , définissez la valeur Truede la propriété sur . Pour remplacer la valeur de la propriété, vous devez spécifier la valeur de SwitchParameter comme suit : -HistorySearchCursorMovesToEnd:$False.

À l’aide de la commande suivante, vous pouvez définir la valeur de la propriété directement :

(Get-PSReadLineOption).HistorySearchCursorMovesToEnd = $False

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-MaximumHistoryCount

Spécifie le nombre maximal de commandes à enregistrer dans l’historique PSReadLine .

L’historique PSReadLine est distinct de l’historique PowerShell.

Type:Int32
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-MaximumKillRingCount

Spécifie le nombre maximal d’éléments stockés dans l’anneau de destruction.

Type:Int32
Position:Named
Valeur par défaut:10
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-PromptText

Ce paramètre définit la valeur de la propriété PromptText . La valeur par défaut est "> ".

PSReadLine analyse votre fonction d’invite pour déterminer comment modifier uniquement la couleur d’une partie de votre invite. Cette analyse n’est pas fiable à 100 %. Utilisez cette option si PSReadLine modifie votre invite de manière inattendue. Incluez n’importe quel espace blanc de fin.

La valeur de ce paramètre peut être une seule chaîne ou un tableau de deux chaînes. La première chaîne est la partie de votre chaîne d’invite que vous souhaitez modifier en rouge en cas d’erreur d’analyse. La deuxième chaîne est une autre chaîne à utiliser lorsqu’il existe une erreur d’analyse.

Type:String[]
Position:Named
Valeur par défaut:>
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ShowToolTips

Lorsque vous affichez les achèvements possibles, les info-bulles sont affichées dans la liste des achèvements.

Cette option est activée par défaut. Cette option n’a pas été activée par défaut dans les versions antérieures de PSReadLine. Pour désactiver, définissez cette option sur $False.

Par défaut, la propriété ShowToolTips de l’objet PSConsoleReadLineOptions global est définie Truesur . L’utilisation de ce SwitchParameter définit la valeur de la propriété sur True. Pour modifier la valeur de la propriété, vous devez spécifier la valeur de SwitchParameter comme suit : -ShowToolTips:$False.

À l’aide de la commande suivante, vous pouvez définir la valeur de la propriété directement :

(Get-PSReadLineOption).ShowToolTips = $False

Type:SwitchParameter
Position:Named
Valeur par défaut:True
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ViModeChangeHandler

Lorsque ViModeIndicator est défini Scriptsur , le bloc de script fourni est appelé chaque fois que le mode change. Le bloc de script est fourni un argument de type ViMode.

Ce paramètre a été introduit dans PowerShell 7.

Type:ScriptBlock
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ViModeIndicator

Cette option définit l’indicateur visuel pour le mode Vi actuel. Mode d’insertion ou mode de commande.

Les valeurs valides sont les suivantes :

  • Aucun : il n’y a pas d’indicateur.
  • Invite : l’invite change de couleur.
  • Curseur : le curseur change de taille.
  • Script : le texte spécifié par l’utilisateur est imprimé.
Type:ViModeStyle
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WordDelimiters

Spécifie les caractères qui délimitent les mots pour les fonctions telles que ForwardWord ou KillWord.

Type:String
Position:Named
Valeur par défaut:;:,.[]{}()/\|^&*-=+'"---
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

None

Vous ne pouvez pas diriger les objets vers cette applet de commande.

Sorties

None

Cette applet de commande ne retourne pas de sortie.