在bash shell中,如何将上一行插入到当前行中?

在bash shell中,如何将上一行插入到当前行中?

在 bash 中,如何!!在 shell 内交互式编辑命令时扩展命令行?我正在vi编辑模式下工作。

当输入新的命令行时,我想引入前一行并将其展开。

我希望在执行命令之前进行扩展。

答案1

您可以尝试在 emacs 模式下使用Alt-^(它类似于Ctrl-Alt-e,但它应该可以仅有的历史扩展)。

如果它不适合您(例如,vi 模式下没有历史扩展的默认绑定),您可以通过放置来手动添加绑定

bind '"\e^": history-expand-line'

.bashrc 中的某处,或者

"\e^": history-expand-line

在你的 .inputrc 中

更新。几点说明:

  1. 如果一切正常,您应该能够按 用之前的命令Alt-^替换任何!!序列,例如echo "!!"将变为echo "previous_command with args"
  2. 如果它不能按预期工作,您可以检查绑定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

相关内容