如何在 iTerm2 中找到键的 ESC 序列的正确组合
How to find the correct combination for a key's ESC sequence in iTerm2
我一直在尝试修复 iTerm2 中 MacVim 为 运行 的情况下的终端仿真器行为。在我的 Vim 设置中,我将以下组合键分配给各个操作:
F10, action_A
CTRL-F10, action_B
SHIFT-F10, action_C
当我在 iTerm2 中将这些组合与 Vim 一起使用时,SHIFT-F10
被正确解释为 action_A
。但是,由于 esc 序列问题,模拟器无法区分 CTRL-F10
和 F10
。
我注意到 iTerm2 配置为在按下 SHIFT-F10
时发送 Esc+[21;2~
。因此,通过将相同的序列分配给 CTRL-F10
,我设法强制 SHIFT-F10
和 CTRL-F10
执行 action_C
和 F10
执行 action_A
.
这证明通过发送正确的 esc 序列,应该能够强制 iTerm2 区分不同的键。
问题是:如果 SHIFT-F10
与 Esc+[21;2~
关联,我们如何找到 CTRL-F10
关联的内容?如何找到代表 CTRL-F10
的 esc 序列?或者十六进制代码? (因为 iTerm2 提供了向终端会话发送十六进制代码的选项)
在 vim 的插入模式下,只需按 Ctrl+V 并按下按键。这将按字面意义插入转义符以及此组合键的其余控制代码。当您已经在编辑配置文件时,这很方便。
你可以类似地运行类似od -t x1
的东西(对于十六进制转储)或者甚至只是猫,它不解释输入,只需在那里按下你的组合键:
$ od -t x1
^[[21~
0000000 1b 5b 32 31 7e 0a
0000006
$
(按一次或两次 Ctrl-D 退出)
Control-F10 可以作为“\e[21;5~”发送,使用操作 'Send text with special chars'。完整答案在这里:how do I know what CTRL-F10 is associated with?
我一直在尝试修复 iTerm2 中 MacVim 为 运行 的情况下的终端仿真器行为。在我的 Vim 设置中,我将以下组合键分配给各个操作:
F10, action_A
CTRL-F10, action_B
SHIFT-F10, action_C
当我在 iTerm2 中将这些组合与 Vim 一起使用时,SHIFT-F10
被正确解释为 action_A
。但是,由于 esc 序列问题,模拟器无法区分 CTRL-F10
和 F10
。
我注意到 iTerm2 配置为在按下 SHIFT-F10
时发送 Esc+[21;2~
。因此,通过将相同的序列分配给 CTRL-F10
,我设法强制 SHIFT-F10
和 CTRL-F10
执行 action_C
和 F10
执行 action_A
.
这证明通过发送正确的 esc 序列,应该能够强制 iTerm2 区分不同的键。
问题是:如果 SHIFT-F10
与 Esc+[21;2~
关联,我们如何找到 CTRL-F10
关联的内容?如何找到代表 CTRL-F10
的 esc 序列?或者十六进制代码? (因为 iTerm2 提供了向终端会话发送十六进制代码的选项)
在 vim 的插入模式下,只需按 Ctrl+V 并按下按键。这将按字面意义插入转义符以及此组合键的其余控制代码。当您已经在编辑配置文件时,这很方便。
你可以类似地运行类似od -t x1
的东西(对于十六进制转储)或者甚至只是猫,它不解释输入,只需在那里按下你的组合键:
$ od -t x1
^[[21~
0000000 1b 5b 32 31 7e 0a
0000006
$
(按一次或两次 Ctrl-D 退出)
Control-F10 可以作为“\e[21;5~”发送,使用操作 'Send text with special chars'。完整答案在这里:how do I know what CTRL-F10 is associated with?