ti-enxame.com

Use CTRL + D para sair e CTRL + L para cls no console do Powershell

Estou tentando fazer

CTRLD - saia do console do Powershell

e

CTRLL - limpe a tela

como na festança.

Até agora, vi que podemos definir

function ^D {exit}

mas isso significa que eu tenho que fazer CTRL + D e pressionar Enter para que funcione.

Além disso, nem me permite definir

function ^L {exit}

Existe alguma maneira de adicionar essas associações de teclas no console padrão do Powershell?

38
manojlds

Há uma nova biblioteca PSReadline para o Powershell v3. que emula a GNU conclusão da guia Bash e as combinações de teclas. CTRLR para trabalhos de pesquisa incremental reversa. Exatamente o que eu queria.

32
manojlds

Pergunta antiga, mas com o PowerShell 5.1 e o PowerShell Core 6.x:

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

25
Glenn

Se você não se importa em confiar em um programa externo, pode fazer o seguinte com AutoHotKey :

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

O exemplo acima funcionará com o console do PowerShell ou CMD. Caso contrário, a única coisa em que posso pensar seria em criar uma mágica P/Invoke com SetWindowsHookEx.

Edit: Corrigido o script AutoHotkey para passar as teclas de atalho para outros programas.

14
Rynant

Há também um snap-in do PowerShell chamado PSEventing, que permitirá que você faça isso (consulte a demonstração na primeira página:

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) }
7
Russell

Você pode definir o modo PSReadline para emacs, ele não será fechado apenas com ^D, você poderá ir para o início da linha com ^A, final da linha com ^E

Inclua isso no seu perfil: Set-PSReadlineOption -EditMode Emacs

Estou usando cmder que usa ConEmu, encontre profile.ps1 com <appdir>/vendor/ para esse caso e você pode adicionar esse arquivo.

Caso contrário, você pode adicionar aos locais padrão onde powershell o carrega. m dos tutoriais AQUI.

1
sdkks