Partager via


about_PSReadLine

Description courte

PSReadLine offre une expérience d’édition de ligne de commande améliorée dans la console PowerShell.

Description longue

PSReadLine 2.0 offre une expérience d’édition de ligne de commande puissante pour la console PowerShell. Il offre :

  • Coloration syntaxique de la ligne de commande
  • Indication visuelle des erreurs de syntaxe
  • Une meilleure expérience multiligne (édition et historique)
  • Liaisons de clés personnalisables
  • Modes Cmd et Emacs
  • Nombreuses options de configuration
  • Complétion du style Bash (facultatif en mode Cmd, par défaut en mode Emacs)
  • Emacs yank/kill-ring
  • Mouvement et suppression « mot » basés sur des jetons PowerShell

PSReadLine nécessite PowerShell 3.0 ou une version ultérieure. PSReadLine fonctionne avec l’hôte de console par défaut, Visual Studio Code et le Terminal Windows. Il ne fonctionne pas dans PowerShell ISE.

PSReadLine 2.1.0 est fourni avec PowerShell 7.2 et est pris en charge dans toutes les versions prises en charge de PowerShell. Il peut être installé à partir du PowerShell Gallery. Pour installer PSReadLine 2.1.0 dans une version prise en charge de PowerShell, exécutez la commande suivante.

Install-Module -Name PSReadLine -RequiredVersion 2.1.0

Notes

À compter de PowerShell 7.0, PowerShell ignore le chargement automatique de PSReadLine sur Windows si un programme de lecteur d’écran est détecté. Actuellement, PSReadLine ne fonctionne pas correctement avec les lecteurs d’écran. Le rendu et la mise en forme par défaut de PowerShell 7.0 sur Windows fonctionnent correctement. Vous pouvez charger manuellement le module si nécessaire.

Les fonctions suivantes sont disponibles dans la classe Microsoft.PowerShell.PSConsoleReadLine.

Fonctions d’édition de base

Abandon

Abandonner l’action actuelle, par exemple : recherche incrémentielle dans l’historique.

  • Emacs: <Ctrl+g>

AcceptAndGetNext

Essayez d’exécuter l’entrée actuelle. S’il peut être exécuté (comme AcceptLine), rappelez l’élément suivant de l’historique la prochaine fois que ReadLine est appelé.

  • Emacs: <Ctrl+o>

AcceptLine

Essayez d’exécuter l’entrée actuelle. Si l’entrée actuelle est incomplète (par exemple, il manque une parenthèse fermante, un crochet ou un guillemet), l’invite de continuation s’affiche sur la ligne suivante et PSReadLine attend que les touches modifient l’entrée actuelle.

  • Cmd : <Enter>
  • Emacs: <Enter>
  • Mode d’insertion vi : <Enter>

AddLine

L’invite de continuation s’affiche sur la ligne suivante et PSReadLine attend que les touches modifient l’entrée actuelle. Il est utile d’entrer une entrée multiligne sous la forme d’une commande unique, même lorsqu’une seule ligne est saisie par elle-même.

  • Cmd : <Shift+Enter>
  • Emacs: <Shift+Enter>
  • Mode d’insertion vi : <Shift+Enter>
  • Mode de commande Vi : <Shift+Enter>

BackwardDeleteChar

Supprimez le caractère avant le curseur.

  • Cmd : <Backspace>, <Ctrl+h>
  • Emacs : <Backspace>, <Ctrl+Backspace>, <Ctrl+h>
  • Mode d’insertion vi : <Backspace>
  • Mode de commande Vi : <X>, <d,h>

BackwardDeleteLine

Like BackwardKillLine : supprime le texte du point au début de la ligne, mais ne place pas le texte supprimé dans le kill-ring.

  • Cmd : <Ctrl+Home>
  • Mode d’insertion vi : <Ctrl+u>, <Ctrl+Home>
  • Mode de commande Vi : <Ctrl+u>, <Ctrl+Home>, <d,0>

BackwardDeleteWord

Supprime le mot précédent.

  • Mode de commande Vi : <Ctrl+w>, <d,b>

BackwardKillLine

Effacez l’entrée du début de l’entrée vers le curseur. Le texte effacé est placé dans le kill-ring.

  • Emacs : <Ctrl+u>, <Ctrl+x,Backspace>

BackwardKillWord

Effacez l’entrée du début du mot actuel vers le curseur. Si le curseur se trouve entre des mots, l’entrée est effacée du début du mot précédent au curseur. Le texte effacé est placé dans le kill-ring.

  • Cmd : <Ctrl+Backspace>, <Ctrl+w>
  • Emacs : <Alt+Backspace>, <Escape,Backspace>
  • Mode d’insertion vi : <Ctrl+Backspace>
  • Mode de commande Vi : <Ctrl+Backspace>

CancelLine

Annulez l’entrée actuelle, en laissant l’entrée à l’écran, mais revenez à l’hôte afin que l’invite soit évaluée à nouveau.

  • Mode d’insertion vi : <Ctrl+c>
  • Mode de commande Vi : <Ctrl+c>

Copier

Copiez la région sélectionnée dans le Presse-papiers système. Si aucune région n’est sélectionnée, copiez la ligne entière.

  • Cmd : <Ctrl+C>

CopyOrCancelLine

Si le texte est sélectionné, copiez dans le Presse-papiers ; sinon, annulez la ligne.

  • Cmd : <Ctrl+c>
  • Emacs: <Ctrl+c>

Couper

Supprimer la région sélectionnée en plaçant le texte supprimé dans le Presse-papiers système.

  • Cmd : <Ctrl+x>

DeleteChar

Supprimez le caractère sous le curseur.

  • Cmd : <Delete>
  • Emacs: <Delete>
  • Mode d’insertion vi : <Delete>
  • Mode de commande Vi : <Delete>, <x>, <d,l>, <d,Spacebar>

DeleteCharOrExit

Supprimez le caractère sous le curseur ou, si la ligne est vide, quittez le processus.

  • Emacs: <Ctrl+d>

DeleteEndOfBuffer

Supprime jusqu’à la fin de la mémoire tampon multiligne.

  • Mode de commande Vi : <d,G>

DeleteEndOfWord

Supprimez jusqu’à la fin du mot.

  • Mode de commande Vi : <d,e>

DeleteLine

Supprime la ligne logique actuelle d’une mémoire tampon multiligne, ce qui permet l’annulation.

  • Mode de commande Vi : <d,d>, <d,_>

DeletePreviousLines

Supprime les lignes logiques demandées précédentes et la ligne logique actuelle dans une mémoire tampon multiligne.

  • Mode de commande Vi : <d,k>

DeleteRelativeLines

Supprime à partir du début de la mémoire tampon la ligne logique actuelle dans une mémoire tampon multiligne.

Comme la plupart des commandes Vi, la <d,g,g> commande peut être ajoutée à un argument numérique qui spécifie un numéro de ligne absolu, qui, avec le numéro de ligne actuel, constitue une plage de lignes à supprimer. S’il n’est pas spécifié, l’argument numérique est défini par défaut sur 1, ce qui fait référence à la première ligne logique d’une mémoire tampon multiligne.

Le nombre réel de lignes à supprimer du multiligne est calculé en tant que différence entre le numéro de ligne logique actuel et l’argument numérique spécifié, qui peut donc être négatif. D’où la partie relative du nom de la méthode.

  • Mode de commande Vi : <d,g,g>

DeleteNextLines

Supprime la ligne logique actuelle et les lignes logiques demandées suivantes dans une mémoire tampon multiligne.

  • Mode de commande Vi : <d,j>

DeleteLineToFirstChar

Supprime le texte du curseur vers le premier caractère non vide de la ligne.

  • Mode de commande Vi : <d,^>

DeleteToEnd

Supprimez jusqu’à la fin de la ligne.

  • Mode de commande Vi : <D>, <d,$>

DeleteWord

Supprimez le mot suivant.

  • Mode de commande Vi : <d,w>

ForwardDeleteLine

Comme ForwardKillLine : supprime le texte du point à la fin de la ligne, mais ne place pas le texte supprimé dans le kill-ring.

  • Cmd : <Ctrl+End>
  • Mode d’insertion Vi : <Ctrl+End>
  • Mode de commande Vi : <Ctrl+End>

InsertLineAbove

Une nouvelle ligne vide est créée au-dessus de la ligne active, quel que soit l’emplacement où se trouve le curseur sur la ligne active. Le curseur se déplace au début de la nouvelle ligne.

  • Cmd : <Ctrl+Enter>

InsertLineBelow

Une nouvelle ligne vide est créée sous la ligne actuelle, quel que soit l’emplacement du curseur sur la ligne active. Le curseur se déplace au début de la nouvelle ligne.

  • Cmd : <Shift+Ctrl+Enter>

InvertCase

Inversez la casse du caractère actuel et passez au suivant.

  • Mode de commande Vi : <~>

KillLine

Effacez l’entrée du curseur jusqu’à la fin de l’entrée. Le texte effacé est placé dans le kill-ring.

  • Emacs: <Ctrl+k>

KillRegion

Supprimez le texte entre le curseur et la marque.

  • La fonction n’est pas lié.

KillWord

Effacez l’entrée du curseur jusqu’à la fin du mot actuel. Si le curseur se trouve entre des mots, l’entrée est effacée du curseur à la fin du mot suivant. Le texte effacé est placé dans le kill-ring.

  • Cmd : <Alt+d>, <Ctrl+Delete>
  • Emacs : <Alt+d>, <Escape,d>
  • Mode d’insertion Vi : <Ctrl+Delete>
  • Mode de commande Vi : <Ctrl+Delete>

Coller

Collez du texte à partir du Presse-papiers système.

  • Cmd : <Ctrl+v>, <Shift+Insert>
  • Mode d’insertion Vi : <Ctrl+v>
  • Mode de commande Vi : <Ctrl+v>

Important

Lorsque vous utilisez la fonction Coller , l’intégralité du contenu de la mémoire tampon du Presse-papiers est collée dans la mémoire tampon d’entrée de PSReadLine. La mémoire tampon d’entrée est ensuite passée à l’analyseur PowerShell. L’entrée collée à l’aide de la méthode de collage de l’application console est copiée dans la mémoire tampon d’entrée un caractère à la fois. La mémoire tampon d’entrée est passée à l’analyseur lorsqu’un caractère de nouvelle ligne est copié. Par conséquent, l’entrée est analysée ligne par ligne. La différence entre les méthodes de collage entraîne un comportement d’exécution différent.

PasteAfter

Collez le Presse-papiers après le curseur, en déplaçant le curseur vers la fin du texte collé.

  • Mode de commande Vi : <p>

PasteBefore

Collez le Presse-papiers avant le curseur, en déplaçant le curseur à la fin du texte collé.

  • Mode de commande Vi : <P>

PrependAndAccept

Ajoutez un « # » et acceptez la ligne.

  • Mode de commande Vi : <#>

Rétablir

Annuler une annulation.

  • Cmd : <Ctrl+y>
  • Mode d’insertion Vi : <Ctrl+y>
  • Mode de commande Vi : <Ctrl+y>

RepeatLastCommand

Répétez la dernière modification de texte.

  • Mode de commande Vi : <.>

RevertLine

Rétablit toutes les entrées à l’entrée actuelle.

  • Cmd : <Escape>
  • Emacs : <Alt+r>, <Escape,r>

ShellBackwardKillWord

Effacez l’entrée du début du mot actuel dans le curseur. Si le curseur se trouve entre des mots, l’entrée est effacée du début du mot précédent vers le curseur. Le texte effacé est placé dans le kill-ring.

La fonction n’est pas lié.

ShellKillWord

Effacez l’entrée du curseur jusqu’à la fin du mot actuel. Si le curseur se trouve entre des mots, l’entrée est effacée du curseur à la fin du mot suivant. Le texte effacé est placé dans le kill-ring.

La fonction n’est pas lié.

SwapCharacters

Échangez le caractère actuel et celui qui le précède.

  • Emacs: <Ctrl+t>
  • Mode d’insertion Vi : <Ctrl+t>
  • Mode de commande Vi : <Ctrl+t>

Annuler

Annuler une modification précédente.

  • Cmd : <Ctrl+z>
  • Emacs : <Ctrl+_>, <Ctrl+x,Ctrl+u>
  • Mode d’insertion Vi : <Ctrl+z>
  • Mode de commande Vi : <Ctrl+z>, <u>

Annuler tout

Annulez toutes les modifications précédentes pour la ligne.

  • Mode de commande Vi : <U>

UnixWordRubout

Effacez l’entrée du début du mot actuel dans le curseur. Si le curseur se trouve entre des mots, l’entrée est effacée du début du mot précédent vers le curseur. Le texte effacé est placé dans le kill-ring.

  • Emacs: <Ctrl+w>

ValidateAndAcceptLine

Tentative d’exécution de l’entrée actuelle. Si l’entrée actuelle est incomplète (par exemple, il manque une parenthèse fermante, un crochet ou un guillemet), l’invite de continuation s’affiche sur la ligne suivante et PSReadLine attend que les clés modifient l’entrée actuelle.

  • Emacs: <Ctrl+m>

ViAcceptLine

Acceptez la ligne et basculez en mode Insertion.

  • Mode de commande Vi : <Enter>

ViAcceptLineOrExit

Comme DeleteCharOrExit en mode Emacs, mais accepte la ligne au lieu de supprimer un caractère.

  • Mode d’insertion Vi : <Ctrl+d>
  • Mode de commande Vi : <Ctrl+d>

ViAppendLine

Une nouvelle ligne est insérée sous la ligne actuelle.

  • Mode de commande Vi : <o>

ViBackwardDeleteGlob

Supprime le mot précédent, en utilisant uniquement des espaces blancs comme délimiteur de mots.

  • Mode de commande Vi : <d,B>

ViBackwardGlob

Déplace le curseur vers le début du mot précédent, en utilisant uniquement des espaces blancs comme délimiteurs.

  • Mode de commande Vi : <B>

ViDeleteBrace

Recherchez l’accolade, la parenthèse ou le crochet correspondant et supprimez tout le contenu dans, y compris l’accolade.

  • Mode de commande Vi : <d,%>

ViDeleteEndOfGlob

Supprimez jusqu’à la fin du mot.

  • Mode de commande Vi : <d,E>

ViDeleteGlob

Supprimez le glob suivant (mot délimité par un espace blanc).

  • Mode de commande Vi : <d,W>

ViDeleteToBeforeChar

Supprime jusqu’à ce que le caractère soit donné.

  • Mode de commande Vi : <d,t>

ViDeleteToBeforeCharBackward

Supprime jusqu’à ce que le caractère soit donné.

  • Mode de commande Vi : <d,T>

ViDeleteToChar

Supprime jusqu’à ce que le caractère soit donné.

  • Mode de commande Vi : <d,f>

ViDeleteToCharBackward

Supprime vers l’arrière jusqu’à ce que le caractère donné soit donné.

  • Mode de commande Vi : <d,F>

ViInsertAtBegining

Basculez vers le mode Insertion et positionnez le curseur au début de la ligne.

  • Mode de commande Vi : <I>

ViInsertAtEnd

Basculez vers le mode Insertion et positionnez le curseur à la fin de la ligne.

  • Mode de commande Vi : <A>

ViInsertLine

Une nouvelle ligne est insérée au-dessus de la ligne actuelle.

  • Mode de commande Vi : <O>

ViInsertWithAppend

Ajoutez à partir de la position de ligne actuelle.

  • Mode de commande Vi : <a>

ViInsertWithDelete

Supprimez le caractère actuel et basculez en mode Insertion.

  • Mode de commande Vi : <s>

ViJoinLines

Joint la ligne actuelle et la ligne suivante.

  • Mode de commande Vi : <J>

ViReplaceLine

Effacez toute la ligne de commande.

  • Mode de commande Vi : <S>, <c,c>

ViReplaceToBeforeChar

Remplace jusqu’à ce que le caractère donné soit donné.

  • Mode de commande Vi : <c,t>

ViReplaceToBeforeCharBackward

Remplace jusqu’à ce que le caractère donné soit donné.

  • Mode de commande Vi : <c,T>

ViReplaceToChar

Supprime jusqu’à ce que le caractère soit donné.

  • Mode de commande Vi : <c,f>

ViReplaceToCharBackward

Remplace jusqu’à ce que le caractère donné soit donné.

  • Mode de commande Vi : <c,F>

ViYankBeginningOfLine

Passer du début de la mémoire tampon au curseur.

  • Mode de commande Vi : <y,0>

ViYankEndOfGlob

Passer du curseur à la fin du ou des WORD.

  • Mode de commande Vi : <y,E>

ViYankEndOfWord

Passer du curseur à la fin du ou des mots.

  • Mode de commande Vi : <y,e>

ViYankLeft

Yank caractère(s) à gauche du curseur.

  • Mode de commande Vi : <y,h>

ViYankLine

Yank l’intégralité de la mémoire tampon.

  • Mode de commande Vi : <y,y>

ViYankNextGlob

Passez du curseur au début du ou des WORD suivants.

  • Mode de commande Vi : <y,W>

ViYankNextWord

Yank le ou les mots après le curseur.

  • Mode de commande Vi : <y,w>

ViYankPercent

Yank vers/depuis l’accolade correspondante.

  • Mode de commande Vi : <y,%>

ViYankPreviousGlob

Passer du début du ou des MOTS au curseur.

  • Mode de commande Vi : <y,B>

ViYankPreviousWord

Placez le ou les mots avant le curseur.

  • Mode de commande Vi : <y,b>

ViYankRight

Yank caractère(s) sous et à droite du curseur.

  • Mode de commande Vi : <y,l>, <y,Spacebar>

ViYankToEndOfLine

Tirez du curseur jusqu’à la fin de la mémoire tampon.

  • Mode de commande Vi : <y,$>

ViYankToFirstChar

Placez le premier caractère non-espace blanc au curseur.

  • Mode de commande Vi : <y,^>

Yank

Ajoutez le texte le plus récemment tué à l’entrée.

  • Emacs: <Ctrl+y>

YankLastArg

Yank le dernier argument de la ligne d’historique précédente. Avec un argument, la première fois qu’il est appelé, se comporte comme YankNthArg. S’il est appelé plusieurs fois, au lieu de cela, il itère dans l’historique et arg définit la direction (négatif inverse la direction).)

  • Cmd : <Alt+.>
  • Emacs : <Alt+.>, <Alt+_>, <Escape,.>, <Escape,_>

YankNthArg

Yank le premier argument (après la commande) de la ligne d’historique précédente. Avec un argument, tirez le nième argument (à partir de 0), si l’argument est négatif, commencez à partir du dernier argument.

  • Emacs : <Ctrl+Alt+y>, <Escape,Ctrl+y>

YankPop

Si l’opération précédente était Yank ou YankPop, remplacez le texte précédemment yank par le texte tué suivant du kill-ring.

  • Emacs : <Alt+y>, <Escape,y>

Fonctions de déplacement du curseur

BackwardChar

Déplacez le curseur d’un caractère vers la gauche. Cela peut déplacer le curseur vers la ligne précédente d’entrée multiligne.

  • Cmd : <LeftArrow>
  • Emacs : <LeftArrow>, <Ctrl+b>
  • Mode d’insertion Vi : <LeftArrow>
  • Mode de commande Vi : <LeftArrow>, <Backspace>, <h>

Retour en arrière

Déplacez le curseur au début du mot actuel ou, si vous le souhaitez, le début du mot précédent. Word limites sont définies par un ensemble configurable de caractères.

  • Cmd : <Ctrl+LeftArrow>
  • Emacs : <Alt+b>, <Escape,b>
  • Mode d’insertion Vi : <Ctrl+LeftArrow>
  • Mode de commande Vi : <Ctrl+LeftArrow>

Les caractères qui définissent des limites de mots sont configurés dans la propriété WordDelimiters de l’objet PSConsoleReadLineOptions . Pour afficher ou modifier la propriété WordDelimiters , consultez Get-PSReadLineOption et Set-PSReadLineOption.

BeginningOfLine

Si l’entrée comporte plusieurs lignes, passez au début de la ligne active ou, si déjà au début de la ligne, passez au début de l’entrée. Si l’entrée a une seule ligne, passez au début de l’entrée.

  • Cmd : <Home>
  • Emacs : <Home>, <Ctrl+a>
  • Mode d’insertion Vi : <Home>
  • Mode de commande Vi : <Home>

EndOfLine

Si l’entrée comporte plusieurs lignes, passez à la fin de la ligne active ou, si déjà à la fin de la ligne, passez à la fin de l’entrée. Si l’entrée a une seule ligne, passez à la fin de l’entrée.

  • Cmd : <End>
  • Emacs : <End>, <Ctrl+e>
  • Mode d’insertion Vi : <End>

ForwardChar

Déplacez le curseur d’un caractère vers la droite. Cela peut déplacer le curseur vers la ligne suivante d’entrée multiligne.

  • Cmd : <RightArrow>
  • Emacs : <RightArrow>, <Ctrl+f>
  • Mode d’insertion Vi : <RightArrow>
  • Mode de commande Vi : <RightArrow>, <Space>, <l>

ForwardWord

Déplacez le curseur vers l’avant jusqu’à la fin du mot actuel ou, s’il y a plusieurs mots, vers la fin du mot suivant. Word limites sont définies par un ensemble configurable de caractères.

  • Emacs : <Alt+f>, <Escape,f>

Les caractères qui définissent des limites de mots sont configurés dans la propriété WordDelimiters de l’objet PSConsoleReadLineOptions . Pour afficher ou modifier la propriété WordDelimiters , consultez Get-PSReadLineOption et Set-PSReadLineOption.

GotoBrace

Accédez à l’accolade, à la parenthèse ou au crochet correspondant.

  • Cmd : <Ctrl+]>
  • Mode d’insertion Vi : <Ctrl+]>
  • Mode de commande Vi : <Ctrl+]>

GotoColumn

Accédez à la colonne indiquée par arg.

  • Mode de commande Vi : <|>

GotoFirstNonBlankOfLine

Déplacez le curseur vers le premier caractère non vide de la ligne.

  • Mode de commande Vi : <^>, <_>

MoveToEndOfLine

Déplacez le curseur à la fin de l’entrée.

  • Mode de commande Vi : <End>, <$>

Ligne suivante

Déplacez le curseur vers la ligne suivante.

  • La fonction n’est pas lié.

NextWord

Déplacez le curseur vers l’avant jusqu’au début du mot suivant. Word limites sont définies par un ensemble configurable de caractères.

  • Cmd : <Ctrl+RightArrow>
  • Mode d’insertion Vi : <Ctrl+RightArrow>
  • Mode de commande Vi : <Ctrl+RightArrow>

Les caractères qui définissent des limites de mots sont configurés dans la propriété WordDelimiters de l’objet PSConsoleReadLineOptions . Pour afficher ou modifier la propriété WordDelimiters , consultez Get-PSReadLineOption et Set-PSReadLineOption.

NextWordEnd

Déplacez le curseur vers l’avant jusqu’à la fin du mot actuel ou, s’il y a plusieurs mots, vers la fin du mot suivant. Word limites sont définies par un ensemble configurable de caractères.

  • Mode de commande Vi : <e>

Les caractères qui définissent des limites de mots sont configurés dans la propriété WordDelimiters de l’objet PSConsoleReadLineOptions . Pour afficher ou modifier la propriété WordDelimiters , consultez Get-PSReadLineOption et Set-PSReadLineOption.

Ligne précédente

Déplacez le curseur vers la ligne précédente.

  • La fonction n’est pas lié.

ShellBackwardWord

Déplacez le curseur au début du mot actuel ou, si vous le souhaitez, le début du mot précédent. Word limites sont définies par des jetons PowerShell.

  • La fonction n’est pas lié.

ShellForwardWord

Déplacez le curseur vers l’avant jusqu’au début du mot suivant. Word limites sont définies par des jetons PowerShell.

  • La fonction n’est pas lié.

ShellNextWord

Déplacez le curseur vers l’avant jusqu’à la fin du mot actuel ou, s’il y a plusieurs mots, vers la fin du mot suivant. Word limites sont définies par des jetons PowerShell.

  • La fonction n’est pas lié.

ViBackwardChar

Déplacez le curseur d’un caractère vers la gauche en mode d’édition Vi. Cela peut déplacer le curseur vers la ligne précédente d’entrée multiligne.

  • Mode d’insertion Vi : <LeftArrow>
  • Mode de commande Vi : <LeftArrow>, <Backspace>, <h>

ViBackwardWord

Déplacez le curseur au début du mot actuel ou, si vous le souhaitez, le début du mot précédent. Word limites sont définies par un ensemble configurable de caractères.

  • Mode de commande Vi : <b>

Les caractères qui définissent des limites de mots sont configurés dans la propriété WordDelimiters de l’objet PSConsoleReadLineOptions . Pour afficher ou modifier la propriété WordDelimiters , consultez Get-PSReadLineOption et Set-PSReadLineOption.

ViForwardChar

Déplacez le curseur d’un caractère à droite en mode d’édition Vi. Cela peut déplacer le curseur vers la ligne suivante d’entrée multiligne.

  • Mode d’insertion Vi : <RightArrow>
  • Mode de commande Vi : <RightArrow>, <Spacebar>, <l>

ViEndOfGlob

Déplace le curseur à la fin du mot, en utilisant uniquement des espaces blancs comme délimiteurs.

  • Mode de commande Vi : <E>

ViEndOfPreviousGlob

Passe à la fin du mot précédent, en utilisant uniquement des espaces blancs comme délimiteur de mots.

  • La fonction n’est pas lié.

ViGotoBrace

Similaire à GotoBrace, mais est basé sur des caractères plutôt que sur jeton.

  • Mode de commande Vi : <%>

ViNextGlob

Passe au mot suivant, en utilisant uniquement un espace blanc comme délimiteur de mots.

  • Mode de commande Vi : <W>

ViNextWord

Déplacez le curseur vers l’avant jusqu’au début du mot suivant. Word limites sont définies par un ensemble configurable de caractères.

  • Mode de commande Vi : <w>

Les caractères qui définissent des limites de mots sont configurés dans la propriété WordDelimiters de l’objet PSConsoleReadLineOptions . Pour afficher ou modifier la propriété WordDelimiters , consultez Get-PSReadLineOption et Set-PSReadLineOption.

Fonctions d’historique

BeginningOfHistory

Accédez au premier élément de l’historique.

  • Emacs: <Alt+<>

ClearHistory

Efface l’historique dans PSReadLine. Cela n’affecte pas l’historique PowerShell.

  • Cmd : <Alt+F7>

EndOfHistory

Accédez au dernier élément (l’entrée actuelle) de l’historique.

  • Emacs: <Alt+>>

ForwardSearchHistory

Effectuez une recherche avancée incrémentielle dans l’historique.

  • Cmd : <Ctrl+s>
  • Emacs: <Ctrl+s>

HistorySearchBackward

Remplacez l’entrée actuelle par l’élément « précédent » de l’historique PSReadLine qui correspond aux caractères entre le début et l’entrée et le curseur.

  • Cmd : <F8>

HistorySearchForward

Remplacez l’entrée actuelle par l’élément « suivant » de l’historique PSReadLine qui correspond aux caractères entre le début et l’entrée et le curseur.

  • Cmd : <Shift+F8>

NextHistory

Remplacez l’entrée actuelle par l’élément « suivant » de l’historique PSReadLine.

  • Cmd : <DownArrow>
  • Emacs : <DownArrow>, <Ctrl+n>
  • Mode d’insertion vi : <DownArrow>
  • Mode de commande Vi : <DownArrow>, <j>, <+>

PreviousHistory

Remplacez l’entrée actuelle par l’élément « précédent » de l’historique PSReadLine.

  • Cmd : <UpArrow>
  • Emacs : <UpArrow>, <Ctrl+p>
  • Mode d’insertion vi : <UpArrow>
  • Mode de commande Vi : <UpArrow>, <k>, <->

ReverseSearchHistory

Effectuez une recherche incrémentielle vers l’arrière dans l’historique.

  • Cmd : <Ctrl+r>
  • Emacs: <Ctrl+r>

ViSearchHistoryBackward

Invite une chaîne de recherche et lance la recherche sur AcceptLine.

  • Mode d’insertion vi : <Ctrl+r>
  • Mode de commande Vi : </>, <Ctrl+r>

Fonctions d’achèvement

Terminé

Essayez d’effectuer la saisie semi-automatique sur le texte entourant le curseur. S’il existe plusieurs complétions possibles, le préfixe non ambigu le plus long est utilisé pour l’achèvement. Si vous tentez d’effectuer l’achèvement non ambigu le plus long, une liste des complétions possibles s’affiche.

  • Emacs: <Tab>

Essayez d’effectuer la saisie semi-automatique sur le texte entourant le curseur. S’il existe plusieurs complétions possibles, le préfixe non ambigu le plus long est utilisé pour l’achèvement. Si vous tentez d’effectuer l’achèvement non ambigu le plus long, une liste des complétions possibles s’affiche.

  • Cmd : <Ctrl+@>, <Ctrl+Spacebar>
  • Emacs: <Ctrl+Spacebar>

PossibleCompletions

Affiche la liste des complétions possibles.

  • Emacs: <Alt+=>
  • Mode d’insertion vi : <Ctrl+Spacebar>
  • Mode de commande Vi : <Ctrl+Spacebar>

TabCompleteNext

Essayez de compléter le texte entourant le curseur avec la saisie semi-automatique suivante disponible.

  • Cmd : <Tab>
  • Mode de commande Vi : <Tab>

TabCompletePrevious

Essayez de compléter le texte entourant le curseur avec l’achèvement disponible précédent.

  • Cmd : <Shift+Tab>
  • Mode de commande Vi : <Shift+Tab>

ViTabCompleteNext

Termine le groupe d’édition actuel, si nécessaire, et appelle TabCompleteNext.

  • Mode d’insertion vi : <Tab>

ViTabCompletePrevious

Termine le groupe d’édition actuel, si nécessaire, et appelle TabCompletePrevious.

  • Mode d’insertion vi : <Shift+Tab>

Fonctions diverses

AcceptNextSuggestionWord

Acceptez le mot suivant de la suggestion incluse ou sélectionnée.

  • La fonction est indépendante.

AcceptSuggestion

Acceptez la suggestion inline ou sélectionnée actuelle.

  • La fonction est indépendante.

CaptureScreen

Démarrer la capture d’écran interactive : les flèches haut/bas sélectionnent les lignes, entrez copie le texte sélectionné dans le Presse-papiers en tant que texte et HTML.

  • La fonction est indépendante.

ClearScreen

Effacez l’écran et dessinez la ligne actuelle en haut de l’écran.

  • Cmd : <Ctrl+l>
  • Emacs: <Ctrl+l>
  • Mode d’insertion vi : <Ctrl+l>
  • Mode de commande Vi : <Ctrl+l>

DigitArgument

Démarrez un nouvel argument numérique à passer à d’autres fonctions. Vous pouvez l’utiliser comme multiplicateur pour la fonction suivante appelée par un clavier. Par exemple, appuyez sur <Alt+1><Alt+0> la valeur de l’argument numérique sur 10. Ensuite, appuyez sur la # touche pour envoyer 10 # caractères (##########) à la ligne d’entrée. De même, vous pouvez l’utiliser avec d’autres opérations, telles que <Delete> ou Left-Arrow.

  • Cmd : <Alt+0>, <Alt+1>, <Alt+2>, <Alt+3>, <Alt+4>, <Alt+5>, <Alt+6><Alt+7>, , <Alt+8>, <Alt+9><Alt+->
  • Emacs : <Alt+0>, <Alt+1>, <Alt+2>, <Alt+3>, <Alt+4>, <Alt+5>, <Alt+6>, <Alt+7>, <Alt+8>, , , <Alt+9><Alt+->
  • Mode de commande Vi : <0>, <1>, <3><2>, <4>, <5>, <6>, <7>, , <8><9>

InvokePrompt

Efface l’invite actuelle et appelle la fonction d’invite pour réafficher l’invite. Utile pour les gestionnaires de clés personnalisés qui changent d’état. Par exemple, modifiez le répertoire actif.

  • La fonction est indépendante.

ScrollDisplayDown

Faites défiler l’affichage vers le bas d’un écran.

  • Cmd : <PageDown>
  • Emacs: <PageDown>

ScrollDisplayDownLine

Faites défiler l’affichage d’une ligne vers le bas.

  • Cmd : <Ctrl+PageDown>
  • Emacs: <Ctrl+PageDown>

ScrollDisplayToCursor

Faites défiler l’affichage jusqu’au curseur.

  • Emacs: <Ctrl+End>

ScrollDisplayTop

Faites défiler l’affichage vers le haut.

  • Emacs: <Ctrl+Home>

ScrollDisplayUp

Faites défiler l’affichage vers le haut d’un écran.

  • Cmd : <PageUp>
  • Emacs: <PageUp>

ScrollDisplayUpLine

Faites défiler l’affichage d’une ligne vers le haut.

  • Cmd : <Ctrl+PageUp>
  • Emacs: <Ctrl+PageUp>

SelfInsert

Insérez la clé.

  • La fonction n’est pas lié.

ShowKeyBindings

Afficher toutes les clés liées.

  • Cmd : <Ctrl+Alt+?>
  • Emacs: <Ctrl+Alt+?>
  • Mode d’insertion Vi : <Ctrl+Alt+?>

ViCommandMode

Basculez le mode de fonctionnement actuel de Vi-Insert vers Vi-Command.

  • Mode d’insertion Vi : <Escape>

ViDigitArgumentInChord

Démarrez un nouvel argument numérique à passer à d’autres fonctions dans l’un des accords de vi.

  • La fonction n’est pas lié.

ViEditVisually

Modifiez la ligne de commande dans un éditeur de texte spécifié par $env :EDITOR ou $env :VISUAL.

  • Emacs: <Ctrl+x,Ctrl+e>
  • Mode de commande Vi : <v>

ViExit

Quitte l’interpréteur de commandes.

  • La fonction n’est pas lié.

ViInsertMode

Basculez en mode Insertion.

  • Mode de commande Vi : <i>

WhatIsKey

Lisez une clé et dites-moi à quoi la clé est liée.

  • Cmd : <Alt+?>
  • Emacs: <Alt+?>

Fonctions de sélection

ExchangePointAndMark

Le curseur est placé à l’emplacement de la marque et la marque est déplacée vers l’emplacement du curseur.

  • Emacs: <Ctrl+x,Ctrl+x>

SelectAll

Sélectionnez la ligne entière.

  • Cmd : <Ctrl+a>

SélectionnerBackwardChar

Ajustez la sélection actuelle pour inclure le caractère précédent.

  • Cmd : <Shift+LeftArrow>
  • Emacs: <Shift+LeftArrow>

SélectionnerBackwardsLine

Ajustez la sélection actuelle pour inclure du curseur au début de la ligne.

  • Cmd : <Shift+Home>
  • Emacs: <Shift+Home>

SelectBackwardWord

Ajustez la sélection actuelle pour inclure le mot précédent.

  • Cmd : <Shift+Ctrl+LeftArrow>
  • Emacs: <Alt+B>

SélectionnerForwardChar

Ajustez la sélection actuelle pour inclure le caractère suivant.

  • Cmd : <Shift+RightArrow>
  • Emacs: <Shift+RightArrow>

SélectionnerForwardWord

Ajustez la sélection actuelle pour inclure le mot suivant à l’aide de ForwardWord.

  • Emacs: <Alt+F>

Sélectionner une ligne

Ajustez la sélection actuelle pour inclure du curseur à la fin de la ligne.

  • Cmd : <Shift+End>
  • Emacs: <Shift+End>

SélectionnerNextWord

Ajustez la sélection actuelle pour inclure le mot suivant.

  • Cmd : <Shift+Ctrl+RightArrow>

SelectShellBackwardWord

Ajustez la sélection actuelle pour inclure le mot précédent à l’aide de ShellBackwardWord.

  • La fonction n’est pas lié.

SelectShellForwardWord

Ajustez la sélection actuelle pour inclure le mot suivant à l’aide de ShellForwardWord.

  • La fonction n’est pas lié.

SelectShellNextWord

Ajustez la sélection actuelle pour inclure le mot suivant à l’aide de ShellNextWord.

  • La fonction n’est pas lié.

SetMark

Marquez l’emplacement actuel du curseur à utiliser dans une commande de modification ultérieure.

  • Emacs: <Ctrl+@>

Fonctions IntelliSense prédictives

Notes

IntelliSense prédictif doit être activé pour utiliser ces fonctions.

AcceptNextWordSuggestion

Accepte le mot suivant de la suggestion inline de Predictive IntelliSense. Cette fonction peut être liée à Ctrl+F en exécutant la commande suivante.

Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord

AcceptSuggestion

Accepte la suggestion en ligne actuelle d’IntelliSense prédictif en appuyant sur RightArrow lorsque le curseur se trouve à la fin de la ligne active.

fonctions Recherche

Recherche de caractères

Lisez un caractère et recherchez l’occurrence suivante de ce caractère. Si un argument est spécifié, recherchez la nième occurrence vers l’avant (ou vers l’arrière si négatif).

  • Cmd : <F3>
  • Emacs: <Ctrl+]>
  • Mode d’insertion Vi : <F3>
  • Mode de commande Vi : <F3>

CharacterSearchBackward

Lisez un caractère et recherchez l’occurrence suivante de ce caractère. Si un argument est spécifié, recherchez la nième occurrence vers l’arrière (ou vers l’avant s’il est négatif).

  • Cmd : <Shift+F3>
  • Emacs: <Ctrl+Alt+]>
  • Mode d’insertion Vi : <Shift+F3>
  • Mode de commande Vi : <Shift+F3>

RepeatLastCharSearch

Répétez la dernière recherche de caractères enregistrée.

  • Mode de commande Vi : <;>

RepeatLastCharSearchBackwards

Répétez la dernière recherche de caractères enregistrée, mais dans la direction opposée.

  • Mode de commande Vi : <,>

RepeatSearch

Répétez la dernière recherche dans la même direction que précédemment.

  • Mode de commande Vi : <n>

RepeatSearchBackward

Répétez la dernière recherche dans la même direction que précédemment.

  • Mode de commande Vi : <N>

SearchChar

Lisez le caractère suivant, puis recherchez-le, en continuant, puis en revenir à un caractère. Il s’agit de la fonctionnalité « t ».

  • Mode de commande Vi : <f>

SearchCharBackward

Lisez le caractère suivant, puis recherchez-le, en reculant, puis en reculant un caractère. Il s’agit de la fonctionnalité « T ».

  • Mode de commande Vi : <F>

SearchCharBackwardWithBackoff

Lisez le caractère suivant, puis recherchez-le, en reculant, puis en reculant un caractère. Il s’agit de la fonctionnalité « T ».

  • Mode de commande Vi : <T>

SearchCharWithBackoff

Lisez le caractère suivant, puis recherchez-le, en continuant, puis en revenir à un caractère. Il s’agit de la fonctionnalité « t ».

  • Mode de commande Vi : <t>

SearchForward

Invite une chaîne de recherche et lance la recherche sur AcceptLine.

  • Mode d’insertion vi : <Ctrl+s>
  • Mode de commande Vi : <?>, <Ctrl+s>

Liaisons de clés personnalisées

PSReadLine prend en charge les liaisons de clés personnalisées à l’aide de l’applet de commande Set-PSReadLineKeyHandler. La plupart des liaisons de clés personnalisées appellent l’une des fonctions ci-dessus, par exemple

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

Vous pouvez lier un ScriptBlock à une clé. ScriptBlock peut faire à peu près tout ce que vous voulez. Voici quelques exemples utiles :

  • modifier la ligne de commande
  • ouverture d’une nouvelle fenêtre (par exemple, aide)
  • modifier les répertoires sans modifier la ligne de commande

Le ScriptBlock reçoit deux arguments :

  • $key - Objet [ConsoleKeyInfo] qui est la clé qui a déclenché la liaison personnalisée. Si vous liez le même ScriptBlock à plusieurs clés et que vous devez effectuer différentes actions en fonction de la clé, vous pouvez case activée $key. De nombreuses liaisons personnalisées ignorent cet argument.

  • $arg - Argument arbitraire. Le plus souvent, il s’agit d’un argument entier que l’utilisateur transmet à partir des liaisons de clé DigitArgument. Si votre liaison n’accepte pas d’arguments, il est raisonnable d’ignorer cet argument.

Examinons un exemple qui ajoute une ligne de commande à l’historique sans l’exécuter. Cela est utile lorsque vous réalisez que vous avez oublié de faire quelque chose, mais que vous ne souhaitez pas entrer à nouveau la ligne de commande que vous avez déjà entrée.

$parameters = @{
    Key = 'Alt+w'
    BriefDescription = 'SaveInHistory'
    LongDescription = 'Save current line in history but do not execute'
    ScriptBlock = {
      param($key, $arg)   # The arguments are ignored in this example

      # GetBufferState gives us the command line (with the cursor position)
      $line = $null
      $cursor = $null
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
        [ref]$cursor)

      # AddToHistory saves the line in history, but does not execute it.
      [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)

      # RevertLine is like pressing Escape.
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
  }
}
Set-PSReadLineKeyHandler @parameters

Vous pouvez voir de nombreux autres exemples dans le fichier SamplePSReadLineProfile.ps1 installé dans le dossier du module PSReadLine.

La plupart des liaisons de clés utilisent certaines fonctions d’assistance pour modifier la ligne de commande. Ces API sont documentées dans la section suivante.

API de prise en charge de la liaison de clé personnalisée

Les fonctions suivantes sont publiques dans Microsoft.PowerShell.PSConsoleReadLine, mais ne peuvent pas être directement liées à une clé. La plupart sont utiles dans les liaisons de clés personnalisées.

void AddToHistory(string command)

Ajoutez une ligne de commande à l’historique sans l’exécuter.

void ClearKillRing()

Effacez le kill-ring. Il est principalement utilisé pour les tests.

void Delete(int start, int length)

Supprimez les caractères de longueur du début. Cette opération prend en charge l’annulation/la restauration par progression.

void Ding()

Effectuez l’action Ding en fonction de la préférence des utilisateurs.

void GetBufferState([ref] string input, [ref] int cursor)
void GetBufferState([ref] Ast ast, [ref] Token[] tokens,
  [ref] ParseError[] parseErrors, [ref] int cursor)

Ces deux fonctions récupèrent des informations utiles sur l’état actuel de la mémoire tampon d’entrée. La première est plus couramment utilisée pour les cas simples. La seconde est utilisée si votre liaison effectue quelque chose de plus avancé avec l’ast.

IEnumerable[Microsoft.PowerShell.KeyHandler]
  GetKeyHandlers(bool includeBound, bool includeUnbound)

IEnumerable[Microsoft.PowerShell.KeyHandler]
  GetKeyHandlers(string[] Chord)

Ces deux fonctions sont utilisées par Get-PSReadLineKeyHandler. La première est utilisée pour obtenir toutes les liaisons de clé. La seconde est utilisée pour obtenir des liaisons de clé spécifiques.

Microsoft.PowerShell.PSConsoleReadLineOptions GetOptions()

Cette fonction est utilisée par Get-PSReadLineOption et n’est probablement pas trop utile dans une liaison de clé personnalisée.

void GetSelectionState([ref] int start, [ref] int length)

S’il n’y a aucune sélection sur la ligne de commande, la fonction retourne -1 à la fois au début et à la longueur. S’il existe une sélection sur la ligne de commande, le début et la longueur de la sélection sont retournés.

void Insert(char c)
void Insert(string s)

Insérez un caractère ou une chaîne au niveau du curseur. Cette opération prend en charge l’annulation/la restauration par progression.

string ReadLine(runspace remoteRunspace,
  System.Management.Automation.EngineIntrinsics engineIntrinsics)

Il s’agit du point d’entrée main vers PSReadLine. Il ne prend pas en charge la récursivité. Il n’est donc pas utile dans une liaison de clé personnalisée.

void RemoveKeyHandler(string[] key)

Cette fonction est utilisée par Remove-PSReadLineKeyHandler et n’est probablement pas trop utile dans une liaison de clé personnalisée.

void Replace(int start, int length, string replacement)

Remplacez une partie de l’entrée. Cette opération prend en charge l’annulation/la restauration par progression. Cette option est préférable à Supprimer suivie de l’option Insérer, car elle est traitée comme une action unique pour annuler.

void SetCursorPosition(int cursor)

Déplacez le curseur vers le décalage donné. Le déplacement du curseur n’est pas suivi pour annuler.

void SetOptions(Microsoft.PowerShell.SetPSReadLineOption options)

Cette fonction est une méthode d’assistance utilisée par l’applet de commande Set-PSReadLineOption, mais elle peut être utile pour une liaison de clé personnalisée qui souhaite modifier temporairement un paramètre.

bool TryGetArgAsInt(System.Object arg, [ref] int numericArg,
  int defaultNumericArg)

Cette méthode d’assistance est utilisée pour les liaisons personnalisées qui respectent DigitArgument. Un appel classique ressemble à

[int]$numericArg = 0
[Microsoft.PowerShell.PSConsoleReadLine]::TryGetArgAsInt($arg,
  [ref]$numericArg, 1)

Notes

Historique des commandes

PSReadLine gère un fichier d’historique contenant toutes les commandes et données que vous avez entrées à partir de la ligne de commande. Les fichiers d’historique sont un fichier nommé $($host.Name)_history.txt. Sur les systèmes Windows, le fichier d’historique est stocké dans $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine. Sur les systèmes non Windows, les fichiers d’historique sont stockés dans $env:XDG_DATA_HOME/powershell/PSReadLine ou $env:HOME/.local/share/powershell/PSReadLine.

L’historique peut contenir des données sensibles, y compris des mots de passe. PSReadLine tente de filtrer les informations sensibles. Les lignes de commande contenant les chaînes suivantes ne sont pas écrites dans le fichier d’historique.

  • mot de passe
  • asplaintext
  • token
  • apikey
  • secret

Commentaires & contribution à PSReadLine

PSReadLine sur GitHub

N’hésitez pas à envoyer une demande de tirage ou à envoyer des commentaires sur la page GitHub.

Voir aussi