我可以重新绑定 Ctrl-C 来执行与 readline 中的 ESC 相同的操作吗?

我可以重新绑定 Ctrl-C 来执行与 readline 中的 ESC 相同的操作吗?

我已经开始在 bash ( set -o vi) 中使用 vi 模式,并且我的笔记本电脑没有转义键(愚蠢的触摸栏...),因此在命令行上保留插入模式很烦人。这让我想到,在 Vim 中,我将 Ctrl-C 重新映射到与转义键相同的功能。

现在,由于 Ctrl-C 通常在 shell 中具有非常重要的用途,因此将该组合键映射到 Esc 可能不是一个好主意,但出于好奇:

是否可以映射Ctrl-CCtrl-$something执行与 readline 中的 Escape 键相同的操作?

答案1

对于这Ctrl-$something部分,您可以使用Ctrl-[而不是Escape在 readline 或一般终端中使用,而无需任何额外的配置。

您还可以绑定任何Ctrl-@Ctrl-[A-Z]Ctrl-[Ctrl-\Ctrl-]和(前提是它们不是像=>或=>这样的终端特殊字符) Ctrl-^,例如:Ctrl-_Ctrl-DeofCtrl-\quit

bind '"\C-@": "\e"'

在某些终端上,Ctrl-@也由组合生成Ctrl-`‎,并且Ctrl-_Ctrl-/组合生成。

此外,这些Alt-key组合通常会映射到Esc-key大多数终端(取决于终端仿真器设置),因此您可以使用以下方式绑定,Alt-C而不是Ctrl-C绑定Escape

bind '"\ec":"\e"'

对于这一Ctrl-C部分,在到达 bash 或 readline 之前,tty 驱动程序Ctrl-C将其作为特殊键 ( ) 进行处理,因为 readline在进入行编辑器时intr不会关闭tty 设置。ISIG你当然可以总是这样做,例如。

stty intr ^]; bind '"\C-C":"\e"'

并重新训练你使用Ctrl-]而不是Ctrl-C当你想中断工作时使用,但这显然是一个非常糟糕的主意。

相关内容