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 git
pas 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 commit
complet. 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 étaitSkipAdding
.$true
- Identique à si la valeur étaitMemoryAndFile
.
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 True
sur . 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 False
sur . 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 $False
sur , 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 False
sur . À l’aide de ce SwitchParameter , définissez la valeur True
de 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 True
sur . 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 Script
sur , 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.