gpt4 book ai didi

powershell - 是否可以向 Powershell 添加键盘快捷键?

转载 作者:行者123 更新时间:2023-12-02 08:10:58 24 4
gpt4 key购买 nike

在使用了几十年的 bash 之后,我已经切换到 Powershell,并且在对我的配置文件进行了一些配置(并添加了 PSCX、openssl 和其他一些工具)之后,我总体上很高兴。

我想念 bash 的一件事:

mkdir some-very-long-dir-name
cd (hit ESC then hit _ on the keyboard)

转义下划线是 bash 的“上一个命令的最后一项”。它非常有用 - 在这个追逐过程中,我不必输入很长的目录名称。

是否可以向 powershell 添加键盘快捷键?怎么办?

如果需要的话,我正在使用 ConEmu 作为我的终端。

最佳答案

简答:

 Set-PSReadlineKeyHandler -Key 'Escape,_' -Function YankLastArg

更长的解释:

感谢@davidbrabant 和@TheIncorrigible1 指出 PSReadLine:它本身不是答案,但理解 PSReadLine 的工作原理是解决这个问题的关键。

虽然 vi 是每个 Linux 发行版的默认编辑器,但 bash 的默认编辑器是 emacs 编辑模式。来自 the bash docs :

In order to switch interactively between emacs and vi editing modes, use the ‘set -o emacs’ and ‘set -o vi’ commands (see The Set Builtin). The Readline default is emacs mode.

这意味着 'escape underscore' 来自 emacs。

奇怪的是,PSReadLine 与 bash 不同,默认情况下不使用 emacs 模式。来自 the PSREADLine docs :

To use Emacs key bindings, you can use: Set-PSReadlineOption -EditMode Emacs

这不是很明确,但这意味着另一种模式是默认的。确认,运行:

get-PSReadlineOption

返回:

EditMode                               : Vi

所以有两种解决方法:

方案一:改变模式

Set-PSReadlineOption -EditMode Emacs

您可以通过 Get-PSReadlineKeyHandler 查看效果,包括标准转义下划线快捷方式:

Escape,_         YankLastArg                   Copy the text of the last argument to the input

转义下划线现在有效。

解决方案 2:将快捷方式添加到现有模式

除了改变模式(事实证明我喜欢 vi 键绑定(bind)!),您还可以运行:

 Set-PSReadlineKeyHandler -Key 'Escape,_' -Function YankLastArg

将其添加到您现有的模式。

关于powershell - 是否可以向 Powershell 添加键盘快捷键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com