找出给定键组合的相应转义序列

时间:2015-12-04 21:52:43

标签: emacs key-bindings iterm2

Emacs中,我想将特定的键组合绑定到命令。但是,因为我在OS X上的Emacs内的终端模式下使用iTerm2,我需要将键组合转换为字符转义序列并将该序列注册到iTerm2以便它能够识别关键组合。

但是如何根据组合键找出相应的序列?例如,我发现像^[[1;8A这样的东西对应于 Ctrl + Alt + up (我在其中配置了 Alt +Esc)中充当iTerm2,但我不知道该密钥组合如何转换为此特定序列。

有没有办法查找或计算任何给定键组合的转义序列?例如, Ctrl + Alt + r 的序列是什么?

相关问题,有人可以向我解释在iTerm2中设置关键组合与其对应序列之间的关系,并使Emacs使用input-decode-map将序列转换为其内部键表示} .emacs内部(例如(define-key input-decode-map "[escape_sequencehere]" [internal_key_representation_here])?在我看来,仅在iTerm2中设置它就足以使绑定工作在Emacs,所以我们何时以及为什么需要在.emacs中设置后者? (也许我们什么时候需要两者来制作一些东西?)

2 个答案:

答案 0 :(得分:1)

某些组合键直接发送到iTerm2中运行的应用程序。你可以得到它

  • 使用ctrl + v方法(参见In bash, how do I bind a function key to a command?)或

    bash-3.2$ ^[[1;10A  (in this case I hit ctrl + v before shift+alt+up)
    
  • sed -n l(请注意它的小写L)。例如,您可以查看应用程序在发送时收到的内容(shift + alt + up):

    bash-3.2$ sed -n l
    ^[[1;10A
    \033[1;10A$
    

如果某些组合键无法通过,您可以指示iTerm2let it pass并将其映射到您可以检测到的组合键,如上所述。
例如,您可以发送并ctrl + alt + cmd + RESC+sdf,您的终端将会收到{{1}您可以将其分配给Emacs中的命令。

答案 1 :(得分:1)

在您的终端类型showkey -a中,让关键笔划飞行。