如何在 zsh 的取消命令行中显示插入符号-C,就像 bash 一样?

mik*_*996 7 zsh shell command-line

当我在选择的外壳中输入一行并改变主意时,我可以快速抛出C-c并重新开始。在bash它下面看起来是这样的:

user@machine:~$ rm everything^C
user@machine:~$ 
Run Code Online (Sandbox Code Playgroud)

但是 on zsh,我真的更喜欢整体,没有显示任何内容:

(~) rm -rf /
(~) 
Run Code Online (Sandbox Code Playgroud)

是的,您可能会明白为什么我希望在该行上看到插入符号 C 或类似的消息,这样我就不会混淆哪一行实际上已被执行并在历史中。

这个小问题在很大程度上是无法搜索的。

mpy*_*mpy 8

您可以为SIGINT定义一个陷阱(由 触发CTRL-C),它将打印^C(或您想要的任何其他文本):

TRAPINT() {
  print -n "^C"
  return $(( 128 + $1 ))
}
Run Code Online (Sandbox Code Playgroud)

这个例子取自man zshmisc. 返回命令有以下背景:

由未捕获信号终止的程序通常返回状态 128 加上信号编号。因此 [above code] 使 SIGINT 的处理程序打印一条消息,然后模拟信号的通常效果。