在 bash' vi 模式下恢复最后一个命令的最后一个参数

在 bash' vi 模式下恢复最后一个命令的最后一个参数

当使用 bash 的 vi 模式(set -o vi)时,是否可以恢复最后执行的命令的最后一个参数?这是在 emacs 模式下使用ESC+完成的.,我也想在 vi 模式下完成。

我知道 bash 提供了!$$_,但它们没有扩展,我发现直接使用它们非常危险。

我尝试过(但没有成功)在 Stack Overflow 上找到的一些有关编辑.inputrc和添加的解决方案:

set editing-mode vi
set keymap vi-insert
"\e.": yank-last-arg
"\e_": yank-last-arg

我正在 bash 中切换到 vi 模式,但我已经很习惯ESC+ 了.,如果能够使用它,或者找到一个快速且简单的替代方案,那就太好了。

编辑:这个问题已被标记为类似问题的重复,该问题询问如何使用 Alt+S 恢复最后一个参数。我具体询问的是 ESC+。 (这是我习惯的快捷方式,其他答案未涵盖)。

编辑:为了补充@chaos的解决方案:以下绑定使ESC+。 (嗯,确实是“.”)粘贴最后一个参数,但你会失去 Vi 的点 (.) 功能:

bind -m vi-command ".":insert-last-argument

答案1

我一直在使用_(在正常模式下)来做到这一点。我发现它记录在这里http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.txt

它也很容易记住:

  • $_扩展到最后一个参数
  • <Esc> + _输入它

答案2

对我来说,当我将以下内容添加到我的.inputrc

$if mode=vi
"\e.":yank-last-arg
$endif

然后,当在 bash 中动态更改它时,必须.inputrc再次读取:

set -o vi
bind -f .inputrc

alt现在,我可以用+得到最后一个参数.

相关内容