在zsh中,如何自动将中断的(^ C)命令保存到历史记录中?

时间:2016-03-09 05:44:46

标签: zsh

执行命令时,命令将保存到历史记录中。 zsh中是否有一个选项可以自动将Ctrl-C中断的命令保存到历史记录中?

1 个答案:

答案 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)提示符下,它使整个多行构造(不仅仅是当前行)可编辑。就像从历史中拉出多线结构一样。