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

做~自己de王妃 提交于 2019-12-09 04:30:34

问题


I am trying to make

CTRL + D - exit Powershell console

and

CTRL + L - clear the screen

like in bash.

So far, I have seen that we can define

function ^D {exit}

but that means I have to do CTRL+D and then hit enter for it to work.

Also, it doesn't even let me define

function ^L {exit}

Is there anyway to add these key bindings in the default Powershell console?


回答1:


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.




回答2:


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

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit




回答3:


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.




回答4:


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



回答5:


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.



来源:https://stackoverflow.com/questions/8360215/use-ctrl-d-to-exit-and-ctrl-l-to-cls-in-powershell-console

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!