执行命令时,命令将保存到历史记录中。 zsh中是否有一个选项可以自动将Ctrl-C
中断的命令保存到历史记录中?
答案 0 :(得分:2)
如果您主要想要返回一个命令并先运行另一个命令,我建议使用push-line
小部件,这是为此而制作的。它将当前命令置于保持状态并清除命令行。运行另一个命令后,将自动恢复原始命令。如果要运行多个命令,可以重复此过程。由于它在堆栈上工作,您甚至可以保留多个命令。它们将以相反的顺序恢复。
来自zshzle(1)
联机帮助页:
推线(^ Q ESC-Q ESC-q)(未绑定)(未绑定)
将当前缓冲区推入缓冲区堆栈并清除缓冲区。下次编辑器启动时,缓冲区将从缓冲区堆栈的顶部弹出并加载到编辑缓冲区中。
如您所见,默认情况下,它以emacs模式(bindkey -e
)绑定到^[q
,^[Q
和^Q
。那是 Alt + q (或 Esc , q ), Alt + < kbd> Shift + q (或 Esc , Shift + q )和 Ctrl + q 。最后一个仅在禁用FLOW_CONTROL
选项setopt noflowcontrol
时才有效。
还有push-line-or-edit
小部件。它在主(PS1
)提示符上的行为相同。但是在辅助(PS2
)提示符下,它使整个多行构造(不仅仅是当前行)可编辑。就像从历史中拉出多线结构一样。