Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CTRL+;D退出并按CTRL+;L到Powershell控制台中的cls_Powershell_Keyboard Shortcuts - Fatal编程技术网

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

使用CTRL+;D退出并按CTRL+;L到Powershell控制台中的cls,powershell,keyboard-shortcuts,Powershell,Keyboard Shortcuts,我正在努力使自己变得更好 CTRL+D-退出Powershell控制台 及 CTRL+L-清除屏幕 就像在bash中一样 到目前为止,我已经看到我们可以定义 function ^D {exit} 但这意味着我必须按CTRL+D,然后按enter键,它才能工作 而且,它甚至不让我定义 function ^L {exit} 是否在默认Powershell控制台中添加这些密钥绑定?如果您不介意依赖外部程序,可以使用以下操作: 以上内容将与PowerShell或CMD控制台一起使用。否则,我唯一能想

我正在努力使自己变得更好

CTRL+D-退出Powershell控制台

CTRL+L-清除屏幕

就像在bash中一样

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

function ^D {exit}
但这意味着我必须按CTRL+D,然后按enter键,它才能工作

而且,它甚至不让我定义

function ^L {exit}

是否在默认Powershell控制台中添加这些密钥绑定?

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

以上内容将与PowerShell或CMD控制台一起使用。否则,我唯一能想到的就是使用
SetWindowsHookEx
创建一些P/Invoke魔法


编辑:修复了将快捷键传递到其他程序的自动热键脚本。

还有一个名为PSEventing的PowerShell管理单元,可用于执行此操作(请参阅首页的演示:


有一个新的库模拟GNU Bash选项卡完成和键绑定。即使CTRL+R用于反向增量搜索也能工作。这正是我想要的。

您可以将
PSReadline
设置为
emacs
模式,它不仅可以使用
^D
退出,还可以使用
^a
转到行的开头,en带有
^E

在您的个人资料中包括以下内容:
Set PSReadlineOption-EditMode Emacs


我使用的是
cmder
,它使用
ConEmu
,查找
profile.ps1
,其中包含

旧问题,但适用于PowerShell 5.1和PowerShell Core 6.x及更高版本:

Set-PSReadlineKeyHandler -Key ctrl+d -Function ViExit

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

将编辑模式设置为Emacs

Set-PSReadlineOption -EditMode Emacs
或者把钥匙绑起来

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

我本不希望通过外部程序来执行此操作,但似乎没有任何其他方法。这非常有用,但它不允许您按ctrl+d退出终端。您可以使用
ctrl
+
d
退出
Set-PSReadlineKeyHandler-Key ctrl+d-函数DeleteCharOrExit
或启用Emac设置PSReadlineOption的s模式-EditMode Emacs
@0xced设置PSReadlineOption似乎仅在PS 5.0上可用。但您可以在Win 7SP1上安装。不尝试此选项是的,但在PS 4.0上肯定不起作用。我将在某个时候升级时尝试此选项。这使PS在windows 8下速度非常慢。这是最好的解决方案到目前为止,它是开箱即用的。只有当您想保留热键时,才需要将上面的行添加到
$Profile
文件中(使用
Echo$Profile
查看其路径)。我必须手动在记事本中创建
$Profile
目录和文件,但我相信某些PowerShell向导可以想出一个简洁的一行程序,在一个命令中完成所有操作。。您只需键入
Notepad$Profile
即可打开
$Profile
文件。请记住,
ViExit
退出终端,无论是否存在或者命令行中没有ext。因此,它与bash中的工作方式不同。如果希望它与bash中的工作方式相同,请使用@0xced comment中的
DeleteCharOrExit
。@Glenn在我的PSv5.1上既不能识别
Set-PSReadlineKeyHandler
也不能识别
ViExit
:(@SebMa我有Windows 10 LTSC的PS 5.1.17763.1852,这可能是仍然支持的最旧Windows版本,这个答案很有效。也支持
-EditMode Vi
。谢谢。这实际上是最好的答案,考虑到我们这些想要此功能的人被用于Bash或其他Emacs模式终端。对于那些没有dea将此命令放在何处(就像我一分钟前一样)您可以在
$profile
所示的位置创建一个类似于bashrc的文件,但您必须以管理员身份打开PS并发出
Set ExecutionPolicy RemoteSigned
,以使其正常工作。
Set-PSReadlineOption -EditMode Emacs
Set-PSReadLineKeyHandler -Key 'Ctrl+d' -Function DeleteCharOrExit