71 votes

Utilisez CTRL + D pour quitter et CTRL + L pour cls dans la console Powershell.

J'essaie de faire

CTRL + D - quitter la console Powershell

et

CTRL + L - effacer l'écran

comme dans bash.

Jusqu'à présent, j'ai vu que nous pouvons définir

function ^D {exit}

mais ça veut dire que je dois faire CTRL+D et ensuite appuyer sur entrée pour que ça marche.

En outre, il ne me laisse même pas définir

function ^L {exit}

Existe-t-il un moyen d'ajouter ces liaisons de touches dans la console Powershell par défaut ?

94voto

Glenn Points 103

Vieille question, mais avec PowerShell 5.1 et PowerShell Core 6.x et plus :

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

21 votes

C'est de loin la meilleure solution, elle fonctionne dès la sortie de la boîte. Seulement si vous voulez persister le raccourci, vous devez ajouter la ligne ci-dessus à votre fichier $Profile (utiliser Echo $Profile pour voir son chemin). J'ai dû créer le $Profile et le fichier dans Notepad manuellement, mais je suis sûr qu'un assistant PowerShell peut trouver une ligne unique pour tout faire en une seule commande

6 votes

Vous pouvez simplement taper notepad $profile pour ouvrir le $profile fichier.

18 votes

Gardez à l'esprit que ViExit quitte le terminal, qu'il y ait ou non du texte dans la ligne de commande. Donc, cela ne fonctionne pas comme dans bash . Si vous voulez que cela fonctionne comme dans bash, alors restez avec DeleteCharOrExit du commentaire de @0xced.

49voto

manojlds Points 96599

Il y a une nouvelle bibliothèque PSReadline pour Powershell v3.0 qui émule la complétion de tabulation et les liaisons de touches de GNU Bash. Même CTRL + R pour les travaux de recherche incrémentale inverse. C'est exactement ce que je voulais.

1 votes

C'est très utile, mais cela ne vous permet pas d'appuyer sur ctrl+d pour quitter le terminal.

38 votes

Vous pouvez obtenir CTRL + D pour sortir avec Set-PSReadlineKeyHandler -Key Ctrl+d -Function DeleteCharOrExit ou en activant le mode Emacs avec Set-PSReadlineOption -EditMode Emacs

1 votes

@0xced Il semble que Set-PSReadlineOption ne soit disponible que sur PS 5.0. Vous pouvez l'installer sur Win 7SP1 et plus. Je n'ai pas essayé, mais cela ne fonctionne pas sur PS 4.0. Je l'essaierai quand je ferai la mise à jour à un moment donné.

16voto

Suman Saurabh Points 151

Les combinaisons de touches sont contrôlées par PSReadLine. Le mode d'édition par défaut de PSReadLine est le style Windows, où Ctrl-D n'est pas lié.

Réglez votre mode d'édition sur Emacs

Set-PSReadlineOption -EditMode Emacs

ou lié la clé

Set-PSReadLineKeyHandler -Key 'Ctrl+d' -Function DeleteCharOrExit

15voto

Rynant Points 6575

Si cela ne vous dérange pas de dépendre d'un programme externe, vous pourriez faire ce qui suit avec AutoHotKey :

#IfWinActive ahk_class ConsoleWindowClass
^L::SendInput , {Esc}cls{Enter}
^D::SendInput , {Esc}exit{Enter}
#IfWinActive

Ce qui précède fonctionne avec la console PowerShell ou CMD. Sinon, la seule chose à laquelle je pense serait de faire un peu de magie avec P/Invoke avec SetWindowsHookEx .

Editar: Correction du script d'AutoHotkey pour passer les touches de raccourci à d'autres programmes.

2 votes

J'aurais préféré ne pas le faire par le biais de programmes externes, mais il ne semble pas y avoir d'autre moyen.

7voto

Russell Points 6893

Il existe également un snapin PowerShell appelé PSEventing qui vous permettra de le faire (voir la démo sur la page d'accueil) :

http://pseventing.codeplex.com/releases/view/66587

# clear screen in response to ctrl+L, unix style 
register-hotkeyevent "ctrl+L" -action { cls; write-host -nonewline (prompt) }

0 votes

Cela rend PS très lent sous Windows 8

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X