我正在尝试重新映射iTerm2中的一些默认按键组合,并想了解将按键绑定到“发送十六进制代码”时发生的情况。
上一篇文章帮助我开始将ctrl-a和ctrl-e按键组合分别重新映射到cmd-left和cmd-right,但是我也想重新映射其他按键组合。(链接到以前的Stackoverflow帖子)。
我含糊不清地理解其中包含十六进制代码,但是我无法确定下一步该怎么做才能了解正在发生的事情或要做什么。
我正在尝试重新映射iTerm2中的一些默认按键组合,并想了解将按键绑定到“发送十六进制代码”时发生的情况。
上一篇文章帮助我开始将ctrl-a和ctrl-e按键组合分别重新映射到cmd-left和cmd-right,但是我也想重新映射其他按键组合。(链接到以前的Stackoverflow帖子)。
我含糊不清地理解其中包含十六进制代码,但是我无法确定下一步该怎么做才能了解正在发生的事情或要做什么。
Answers:
这些十六进制代码只是字节序列。例如,映射一个键组合0x66 0x6f 0x6f
使其插入foo
。0xc3 0xa4
如果使用UTF-8,将插入ä。0x1b 0x1b 0x5b 0x43
意味着escape escape [ C
。
一些字节序列(如ANSI转义序列)甚至单个字节(如ASCII控制字符)在终端中都有特殊含义。
要使⌘←和⌘→转到行的开头和结尾,可以将它们分配给0x01(以脱字符号表示的^ A)和0x05(以脱字符号表示的^ E):
您可以通过将assign分配给来使它向前删除\ed
:
在iTerm的首选项中将- ←和programs→更改为\eb
,\ef
也会在不支持readline或emacs样式的键绑定的程序中更改它们。另一个选择是将其添加到〜/ .inputrc:
"\e\e[D": backward-word
"\e\e[C": forward-word
您可以运行read
并按组合键以查看它们插入了哪些字符。例如^[^[[D
,默认情况下,⌥←插入,^[
以脱字符号表示转义。