经过几十年的重击,我已经切换到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
将其添加到您现有的模式。