在 bash 中,如何!!
在 shell 内交互式编辑命令时扩展命令行?我正在vi
编辑模式下工作。
当输入新的命令行时,我想引入前一行并将其展开。
我希望在执行命令之前进行扩展。
答案1
您可以尝试在 emacs 模式下使用Alt-^(它类似于Ctrl-Alt-e,但它应该可以仅有的历史扩展)。
如果它不适合您(例如,vi 模式下没有历史扩展的默认绑定),您可以通过放置来手动添加绑定
bind '"\e^": history-expand-line'
.bashrc 中的某处,或者
"\e^": history-expand-line
在你的 .inputrc 中
更新。几点说明:
- 如果一切正常,您应该能够按 用之前的命令Alt-^替换任何
!!
序列,例如echo "!!"
将变为echo "previous_command with args"
- 如果它不能按预期工作,您可以检查绑定
bind -P | grep history-expand
(它应该返回类似的内容history-expand-line can be found on "\e^"
)
答案2
这可能对你有用:
echo abc
!!
现在同时输入 Ctrl-Alt-e(或者用 emacs 的说法 CMe)。
echo abc
答案3
这将使M-,
在 emacs 模式下插入上一行:
"\e,": "!!\e^"
!!
您还可以通过将其绑定到来扩展空间指示符magic-space
:
" ": magic-space