我有类似的问题Ctrl-C 在 zsh 中不起作用
但这不是stty
设置或按键绑定的问题。它确实在一个终端上发生,而在其他终端上却能正常工作。
我得到:来自 stty:
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
将 intr 更改为其他键,会使 Ctrl-C 响铃,但其他键不执行任何操作。
Ctrl-Z 有效,但 Ctrl-C 无效。
我检查了 ZSH 设置/环境并与良好的终端进行了比较 - 但我没有看到任何可疑/明显的东西。
当我使用 ssh 连接到其他地方时,Ctrl-C 有效。
运行stty raw; xxd
顺利,为 Ctrl-C 打印“03”。没有stay raw
xxd 则根本没有“03”键。
重置和硬重置终端没有区别。
甚至发送kill -INT
到坏终端中运行的任何进程也会被忽略。
就像信号掩码被禁用了一样。
有什么想法可以让 zsh 返回中断信号吗?(除了关闭窗口之外......)
答案1
似乎正在执行
trap "echo hello" INT
然后删除陷阱处理程序并使用trap INT
将信号掩码放回到正确的形式。
Ctrl-C 现在又可以工作了....(很奇怪这是怎么发生的,我仍然想知道..)