在Powershell控制台中使用CTRL + D退出并按CTRL + L到cls

时间:2011-12-02 17:28:01

标签: powershell keyboard-shortcuts

我正在尝试制作

CTRL + D - 退出Powershell控制台

CTRL + L - 清除屏幕

就像在bash中一样。

到目前为止,我已经看到我们可以定义

function ^D {exit}

但这意味着我必须按CTRL + D然后按Enter键才能正常工作。

此外,它甚至没有让我定义

function ^L {exit}

无论如何都要在默认的Powershell控制台中添加这些键绑定吗?

6 个答案:

答案 0 :(得分:28)

有一个新的库PSReadline for Powershell v3.0可以模拟GNU Bash选项卡的完成和键绑定。甚至 CTRL + R 用于反向增量搜索。正是我想要的。

答案 1 :(得分:14)

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

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

以上内容适用于PowerShell或CMD控制台。否则,我唯一能想到的就是用SetWindowsHookEx处理一些P / Invoke魔法。

编辑:修正了AutoHotkey脚本,将快捷键传递给其他程序。

答案 2 :(得分:7)

还有一个名为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) }

答案 3 :(得分:6)

旧问题,但使用PowerShell 5.1和PowerShell Core 6.x:

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

答案 4 :(得分:2)

这些键绑定由PSReadLine控制。 PSReadLine的默认编辑模式是Windows样式,其中Ctrl-D是未绑定的。

将编辑模式设置为Emacs

Set-PSReadlineOption -EditMode Emacs

或绑定键

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

答案 5 :(得分:1)

您可以将PSReadline设置为emacs模式,它不仅会以^D退出,您还可以以^A到行首,结束^E

将此包含在您的个人资料中: Set-PSReadlineOption -EditMode Emacs

我正在使用cmder,它使用ConEmu,对于这种情况,请在profile.ps1中找到<appdir>/vendor/,然后可以将其添加到该文件中。

否则,您可以将powershell加载到默认位置。 One of tutorials HERE.