经过几十年的重击,我已经切换到Powershell,并且对我的配置文件进行了一些配置(并添加了PSCX,openssl和其他一些工具)后,我通常很高兴。

我对bash怀念的一件事:

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

转义下划线是“上一条命令的最后一项”的重击。这非常有用-在这种情况下,我不必键入非常长的目录名。

是否可以在powershell中添加键盘快捷键?怎么样?

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

最佳答案

简短答案:

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

更长的解释:

感谢@davidbrabant和@ TheIncorrigible1指向PSReadLine:这不是答案本身,但是了解PSReadLine的工作方式是解决此问题的关键。

尽管vi是每个Linux发行版上的默认编辑器,但bash的默认设置是emacs编辑模式。从the bash docs:



这意味着“转义下划线”来自emacs。

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



它不是很明确,但是这意味着默认为其他模式。确认运行:
get-PSReadlineOption

返回值:
EditMode                               : Vi

因此,有两种解决方案:

解决方案1:更改模式
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

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

08-18 19:30