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

man*_*lds 33 powershell keyboard-shortcuts

我想做

CTRL+ D- 退出Powershell控制台

CTRL+ L- 清除屏幕

喜欢在bash.

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

function ^D {exit}
Run Code Online (Sandbox Code Playgroud)

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

而且,它甚至没有让我定义

function ^L {exit}
Run Code Online (Sandbox Code Playgroud)

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

man*_*lds 29

PSReadlinePowershell v3.0有一个新库,它模拟GNU Bash选项卡完成和键绑定.甚至CTRL+ R用于反向增量搜索工作.正是我想要的.

  • 您可以使用`Set-PSReadlineKeyHandler -Key Ctrl + d -Function DeleteCharOrExit`或使用`Set-PSReadlineOption -EditMode Emacs'启用Emacs模式来退出`CTRL` +`D` (13认同)

Ryn*_*ant 14

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

#IfWinActive ahk_class ConsoleWindowClass
^L::SendInput , {Esc}cls{Enter}
^D::SendInput , {Esc}exit{Enter}
#IfWinActive
Run Code Online (Sandbox Code Playgroud)

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

编辑:修复了AutoHotkey脚本将快捷键传递给其他程序.

  • 我宁愿不通过外部程序来做,但似乎没有任何其他方式. (2认同)

Gle*_*enn 13

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

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

  • 这是迄今为止最好的解决方案,可以立即使用。仅当您要保留热键时,才需要将上述行添加到$ Profile文件中(使用echo $ Profile查看其路径)。我不得不在记事本中手动创建`$ Profile`目录和文件,但是我确信某些PowerShell向导可以提供一个简洁的单行代码,以在一个命令中完成所有操作。 (5认同)
  • 请记住,无论命令行中是否有文本,“ViExit”都会退出终端。所以,它不像在 bash 中那样工作。如果您希望它像在 bash 中一样工作,请坚持使用 @0xced 注释中的“DeleteCharOrExit”。 (5认同)
  • 您只需输入“notepad $profile”即可打开“$profile”文件。 (3认同)

Rus*_*ell 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) }
Run Code Online (Sandbox Code Playgroud)


小智 5

你可以设置你PSReadlineemacs模式,它不仅会退出^D,你还可以去行首^A,行尾^E

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

我正在使用cmderwhich uses ConEmu, find profile.ps1with<appdir>/vendor/在这种情况下,您可以添加到该文件中。

否则,您可以添加到powershell加载它的默认位置。这里的教程之一。


Sum*_*abh 5

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

将编辑模式设置为 Emacs

Set-PSReadlineOption -EditMode Emacs
Run Code Online (Sandbox Code Playgroud)

或绑定密钥

Set-PSReadLineKeyHandler -Key 'Ctrl+d' -Function DeleteCharOrExit
Run Code Online (Sandbox Code Playgroud)