在Powershell控制台中使用CTRL + D退出,CTRL + L关闭

9cbw7uwe  于 2023-11-18  发布在  Shell
关注(0)|答案(7)|浏览(234)

我想说
CTRL + D退出Powershell控制台

CTRL + L清除屏幕
就像在bash里一样。
到目前为止,我已经看到我们可以定义

function ^D {exit}

字符串
但这意味着我必须做CTRL+D,然后按回车键才能工作。
而且,它甚至不让我定义

function ^L {exit}


有没有办法在默认的PowerShell控制台中添加这些键绑定?

ldioqlga

ldioqlga1#

老问题,但使用PowerShell 5.1和PowerShell Core 6.x及更高版本:

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

字符串

tcomlyy6

tcomlyy62#

有一个新的库PSReadline for Powershell v3.0,它模拟了GNUBash标签完成和键绑定。甚至CTRL + R的反向增量搜索也可以工作。正是我想要的。

iqjalb3h

iqjalb3h3#

如果您不介意依赖外部程序,可以使用AutoHotKey执行以下操作:

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

字符串
上面的代码可以在PowerShell或CMD控制台上使用,否则我唯一能想到的就是用SetWindowsHookEx来实现一些P/PockeMagic。

**编辑:**修复AutoHotkey脚本通过快捷键传递到其他程序。

j8yoct9x

j8yoct9x4#

键绑定由PSReadLine控制。PSReadLine的默认编辑模式是Windows样式,其中Ctrl-D是未绑定的。
将编辑模式设置为Emacs

Set-PSReadlineOption -EditMode Emacs

字符串
或绑定密钥

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

slsn1g29

slsn1g295#

还有一个名为PSEventing的PowerShell管理单元,可以让你做到这一点(请参阅首页上的演示:
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) }

字符串

qzwqbdag

qzwqbdag6#

您可以将PSReadline设置为emacs模式,它不仅会以^D退出,您还可以以^A进入行首,以^E进入行尾
在您的个人资料中包含此内容:Set-PSReadlineOption -EditMode Emacs
我使用的是cmder,它使用了ConEmu,在这种情况下,找到profile.ps1<appdir>/vendor/,你可以添加到这个文件中。
否则,您可以添加到powershell加载它的默认位置。One of tutorials HERE.

8iwquhpp

8iwquhpp7#

Powrshell 5.x和7.x

notepad $PROFILE

字符串
把下面的线:

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit
Set-PSReadlineKeyHandler -Key ctrl+l -Function ClearScreen


reload $PROFILE

. $PROFILE

相关问题