Ce module remplace l'expérience d'édition en ligne de commande de PowerShell pour les versions 3 et supérieures. Il fournit :
L'expérience « prêt à l'emploi » est censée être très familière aux utilisateurs de PowerShell : il ne devrait pas être nécessaire d'apprendre de nouvelles frappes.
Quelques bonnes ressources sur PSReadLine
:
PSReadLine
.PSReadLine
.PSReadLine
à votre goût. Il existe plusieurs façons d'installer PSReadLine
.
Vous aurez besoin de la version 1.6.0
ou supérieure de PowerShellGet
pour installer la dernière version préliminaire de PSReadLine
.
Windows PowerShell 5.1 est livré avec une ancienne version de PowerShellGet
qui ne prend pas en charge l'installation de modules préliminaires. Les utilisateurs de Windows PowerShell doivent donc installer la dernière version de PowerShellGet
(si ce n'est pas encore le cas) en exécutant les commandes suivantes à partir d'une session Windows PowerShell élevée :
Install-Module - Name PowerShellGet - Force
Exit
Après avoir installé PowerShellGet
, vous pouvez obtenir la dernière version préliminaire de PSReadLine
en exécutant
Install-Module PSReadLine - AllowPrerelease - Force
Si vous souhaitez uniquement obtenir la dernière version stable, exécutez :
Install-Module PSReadLine
[!NOTE] Les versions préliminaires auront des fonctionnalités et des corrections de bugs plus récentes, mais peuvent également introduire de nouveaux problèmes.
Si vous utilisez Windows PowerShell sur Windows 10 ou PowerShell 6+, PSReadLine
est déjà installé. Windows PowerShell sur la dernière version de Windows 10 dispose de la version 2.0.0-beta2
de PSReadLine
. Les versions PowerShell 6+ disposent des versions préliminaires les plus récentes de PSReadLine
.
Avec la version préliminaire de PowerShellGet pour PowerShell V3/V4, les téléchargements depuis GitHub sont obsolètes. Nous n'avons pas l'intention de mettre à jour les versions sur GitHub et pouvons supprimer entièrement la version de GitHub à un moment donné.
Si vous utilisez les versions Windows PowerShell V5 ou V5.1, ou si vous utilisez les versions PowerShell 6+, vous êtes prêt à partir et pouvez ignorer cette section.
Sinon, vous devez modifier votre profil pour importer le module. Il existe deux fichiers de profil couramment utilisés et les instructions sont légèrement différentes pour chacun. Le fichier C:Users[User]DocumentsWindowsPowerShellprofile.ps1
est utilisé pour tous les hôtes (par exemple l' ISE
et powershell.exe
). Si vous disposez déjà de ce fichier, vous devez ajouter ce qui suit :
if ( $host .Name -eq ' ConsoleHost ' )
{
Import-Module PSReadLine
}
Alternativement, le fichier C:Users[User]DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
est uniquement destiné à powershell.exe
. A l'aide de ce fichier, vous pouvez simplement ajouter :
Import-Module PSReadLine
Dans les deux cas, vous pouvez créer le fichier approprié si vous n’en avez pas déjà un.
Lorsque vous exécutez l'une des commandes suggérées ci-dessous, assurez-vous de quitter toutes les instances de powershell.exe
, pwsh.exe
ou pwsh
, y compris celles ouvertes dans les terminaux VSCode
.
Ensuite, pour vous assurer que PSReadLine
n'est pas chargé :
cmd.exe
, powershell_ise.exe
ou via le raccourci Win+R
;bash
ou zsh
). Si vous utilisez la version de PSReadLine
fournie avec Windows PowerShell, vous devez exécuter : powershell -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
. Remarque : vous devrez vous assurer que PowershellGet est mis à jour avant d'exécuter cette commande.
Si vous utilisez la version de PSReadLine
fournie avec les versions PowerShell 6+, vous devez exécuter : <path-to-pwsh-executable> -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
.
Si vous avez installé PSReadLine
vous-même à partir de la galerie PowerShell, vous pouvez simplement exécuter : powershell -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
ou <path-to-pwsh-executable> -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
, selon la version de PowerShell que vous utilisez.
Si vous obtenez une erreur du type :
Remove-Item : Cannot remove item
C:Users{yourName}DocumentsWindowsPowerShellModulesPSReadLineMicrosoft.PowerShell.PSReadLine.dll: Access to the path
'C:Users{yourName}DocumentsWindowsPowerShellModulesPSReadLineMicrosoft.PowerShell.PSReadLine.dll' is denied.
ou un avertissement comme :
WARNING: The version '2.0.0' of module 'PSReadLine' is currently in use. Retry the operation after closing the applications.
Ensuite, vous n'avez pas tué tous les processus chargés PSReadLine
.
Pour commencer à utiliser, importez simplement le module :
Import-Module PSReadLine
Pour utiliser les raccourcis clavier Emacs, vous pouvez utiliser :
Set-PSReadLineOption - EditMode Emacs
Pour afficher les raccourcis clavier actuels :
Get-PSReadLineKeyHandler
Il existe de nombreuses options de configuration, voir les options de Set-PSReadLineOption
. PSReadLine
propose de l'aide pour ses applets de commande ainsi qu'une rubrique about_PSReadLine
- consultez ces rubriques pour une aide plus détaillée.
Pour définir vos propres raccourcis clavier personnalisés, utilisez l'applet de commande Set-PSReadLineKeyHandler
. Par exemple, pour une meilleure expérience historique, essayez :
Set-PSReadLineKeyHandler - Key UpArrow - Function HistorySearchBackward
Set-PSReadLineKeyHandler - Key DownArrow - Function HistorySearchForward
Avec ces liaisons, la flèche vers le haut/la flèche vers le bas fonctionnera comme PowerShell/cmd si la ligne de commande actuelle est vide. Si vous avez saisi du texte, il recherchera dans l'historique les commandes commençant par le texte actuellement saisi.
Pour activer la complétion du style bash sans utiliser le mode Emacs, vous pouvez utiliser :
Set-PSReadLineKeyHandler - Key Tab - Function Complete
Voici un exemple plus intéressant de ce qui est possible :
Set-PSReadLineKeyHandler - Chord ' " ' , " ' " `
- BriefDescription SmartInsertQuote `
- LongDescription " Insert paired quotes if not already on a quote " `
- ScriptBlock {
param ( $key , $arg )
$line = $null
$cursor = $null
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState([ ref ] $line , [ ref ] $cursor )
if ( $line .Length -gt $cursor -and $line [ $cursor ] -eq $key .KeyChar ) {
# Just move the cursor
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition( $cursor + 1 )
}
else {
# Insert matching quotes, move cursor to be in between the quotes
[ Microsoft.PowerShell.PSConsoleReadLine ]::Insert( " $ ( $key .KeyChar ) " * 2 )
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState([ ref ] $line , [ ref ] $cursor )
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition( $cursor - 1 )
}
}
Dans cet exemple, lorsque vous tapez un guillemet simple ou un guillemet double, deux choses peuvent se produire. Si le caractère qui suit le curseur n'est pas le guillemet tapé, alors une paire de guillemets correspondants est insérée et le curseur est placé à l'intérieur des guillemets correspondants. Si le caractère qui suit le curseur est le guillemet tapé, le curseur est simplement déplacé au-delà du guillemet sans rien insérer. Si vous utilisez Resharper ou un autre éditeur intelligent, cette expérience vous sera familière.
Notez qu'avec le gestionnaire écrit de cette façon, il gère correctement l'annulation - les deux guillemets seront annulés avec une seule annulation.
L'exemple de fichier de profil contient de nombreux exemples intéressants à consulter. Ce fichier est inclus lorsque PSReadLine
est installé.
Consultez les méthodes publiques de [Microsoft.PowerShell.PSConsoleReadLine]
pour voir quelles autres fonctionnalités intégrées vous pouvez modifier.
Si vous souhaitez modifier la ligne de commande d'une manière non implémentée dans votre liaison de clé personnalisée, vous pouvez utiliser les méthodes :
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState
[ Microsoft.PowerShell.PSConsoleReadLine ]::Insert
[ Microsoft.PowerShell.PSConsoleReadLine ]::Replace
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition
Veuillez consulter le Guide de contribution pour savoir comment développer et contribuer.
Pour créer PSReadLine
sur Windows, Linux ou macOS, vous devez avoir installé les éléments suivants :
InvokeBuild
et platyPS
Le script de build build.ps1
peut être utilisé pour amorcer, construire et tester le projet.
./build.ps1 -Bootstrap
./build.ps1 -Configuration Debug -Framework net462
./build.ps1 -Configuration Debug -Framework netcoreapp2.1
./build.ps1 -Test -Configuration Debug -Framework net462
./build.ps1 -Test -Configuration Debug -Framework netcoreapp2.1
Après la construction, les artefacts produits peuvent être trouvés dans <your-local-repo-root>/bin/Debug
. Afin d'isoler votre module importé de celui construit localement, assurez-vous d'exécuter pwsh -NonInteractive -NoProfile
pour ne pas charger automatiquement le module PSReadLine par défaut installé. Ensuite, chargez le module PSReadLine construit localement par Import-Module <your-local-repo-root>/bin/Debug/PSReadLine/PSReadLine.psd1
.
Le journal des modifications est disponible ici.
PSReadLine est sous licence BSD à 2 clauses.
Veuillez consulter notre code de conduite avant de participer à ce projet.
Pour tout problème de sécurité, veuillez consulter notre politique de sécurité.