我已经开始在 bash ( set -o vi
) 中使用 vi 模式,并且我的笔记本电脑没有转义键(愚蠢的触摸栏...),因此在命令行上保留插入模式很烦人。这让我想到,在 Vim 中,我将 Ctrl-C 重新映射到与转义键相同的功能。
现在,由于 Ctrl-C 通常在 shell 中具有非常重要的用途,因此将该组合键映射到 Esc 可能不是一个好主意,但出于好奇:
是否可以映射Ctrl-C
或Ctrl-$something
执行与 readline 中的 Escape 键相同的操作?
答案1
对于这Ctrl-$something
部分,您可以使用Ctrl-[
而不是Escape
在 readline 或一般终端中使用,而无需任何额外的配置。
您还可以绑定任何Ctrl-@
、Ctrl-[A-Z]
、Ctrl-[
、Ctrl-\
、Ctrl-]
和(前提是它们不是像=>或=>这样的终端特殊字符) Ctrl-^
,例如:Ctrl-_
Ctrl-D
eof
Ctrl-\
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
当你想中断工作时使用,但这显然是一个非常糟糕的主意。