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

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

当我正在向我选择的 shell 输入一行时,又改变了主意,我可以快速地放弃C-c并重新开始。下面bash是这样的:

user@machine:~$ rm everything^C
user@machine:~$ 

但在 上zsh,我总体上更喜欢它,什么都没有显示:

(~) rm -rf /
(~) 

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

这个小问题基本上无法通过 Google 解决。

答案1

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

TRAPINT() {
  print -n "^C"
  return $(( 128 + $1 ))
}

此示例取自man zshmisc。 return 命令具有以下背景:

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

相关内容