Use CTRL + D to exit and CTRL + L to cls in Powershell console

前端 未结 6 1523
说谎
说谎 2021-02-01 13:13

I am trying to make

CTRL + D - exit Powershell console

and

CTRL + L - clear the screen

like in bash.

相关标签:
6条回答
  • 2021-02-01 13:35

    The keybindings are controlled by PSReadLine. PSReadLine's default edit mode is Windows style, where Ctrl-D is unbound.

    Set your edit mode to Emacs

    Set-PSReadlineOption -EditMode Emacs
    

    or bound the key

    Set-PSReadLineKeyHandler -Key 'Ctrl+d' -Function DeleteCharOrExit
    
    0 讨论(0)
  • 2021-02-01 13:37

    Old question, but with PowerShell 5.1 and PowerShell Core 6.x and later:

    Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

    0 讨论(0)
  • 2021-02-01 13:39

    You can set your PSReadline to emacs mode, it will not only exit with ^D, you will be able to go to beginning of line with ^A, end of the line with ^E

    Include this in your profile: Set-PSReadlineOption -EditMode Emacs

    I'm using cmder which uses ConEmu, find profile.ps1 with <appdir>/vendor/ for that case and you can add into that file.

    Otherwise you can add to default locations where powershell loads it. One of tutorials HERE.

    0 讨论(0)
  • 2021-02-01 13:40

    There is a new library PSReadline for Powershell v3.0 that emulates the GNU Bash tab completion and key bindings. Even CTRL + R for reverse incremental search works. Exactly what I wanted.

    0 讨论(0)
  • 2021-02-01 13:48

    If you don't mind relying on an external program, you could do the following with AutoHotKey:

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

    The above will work with the PowerShell or CMD console. Otherwise the only thing I can think of would be to work up some P/Invoke magic with SetWindowsHookEx.

    Edit: Fixed AutoHotkey script to pass through the shortcut keys to other programs.

    0 讨论(0)
  • 2021-02-01 13:50

    There is also a PowerShell snapin called PSEventing which will allow you to do this (see the demo on the front page:

    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 讨论(0)
提交回复
热议问题