如何重置 bash shell 的Ctrl+C键盘快捷键?几个月前我更改了它,但似乎无法恢复。
答案1
在终端中用于取消进程的Ctrl+快捷键是C不是一个 bash 快捷方式,但与 tty 相关,因为它是可以发送到终端中处于活动状态的进程的信号之一(在本例中为 SIGINT)的快捷方式。如前所述在这次讨论中经过维尔德普拉瑟,
终端(驱动程序)拦截 ^C 并将其转换为发送给附加进程(即 shell)的信号。
有关如何处理 SIGINT 和其他 POSIX 信号的更多信息,请参阅这篇深入的文章。
需要注意的是,Bash 快捷键(如Ctrl+ A(移至行首)等)由 readline 库管理;当前绑定可以通过 显示bind -P
;请参阅man bash
和man readline
,或Ubuntu 在线手册页。但是,即使您还使用 readline 或在您的 中设置了Ctrl+ ,tty 设置+仍然会覆盖它。C.inputrc
CtrlC
然而,您应该检查是否更改了 中的任何键盘快捷键gnome terminal
。转到菜单并单击编辑 > 键盘快捷键,就好像您已经创建了其中一个Ctrl+C来覆盖 tty Ctrl+一样C。
去检查当前 ttybindings run stty -a
,其中列出了例如
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
为了清除中断信号(intr)的当前绑定,首先运行:
stty intr ^-
然后才运行stty intr ^C
重新分配快捷方式。
确保使用大写字母 C,因为这非常重要。这是重置快捷方式的方法,但如果这仍然不起作用,您可能需要放入stty intr ^C
一个文件并在终端启动时读取它,正如我讨论的那样在这里的相关答案中。
Ctrl更多关于+ 的一般信息C可以在以下两篇 Stackoverflow 文章中找到: