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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出给定键组合的相应转义序列相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

某些组合键直接发送到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 33[1;10A$

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

另一答案

在您的终端类型showkey -a并让键击飞行。

以上是关于找出给定键组合的相应转义序列的主要内容,如果未能解决你的问题,请参考以下文章

给定一组正数,找出最接近给定常数的加法组合?

golang:给定一个数字切片,用时间复杂度为O(n)的算法找出所有和为10的数字组合

LeetCode——组合总和 Ⅳ

LeetCode——组合总和 Ⅳ

JavaScript 代码片段

LeetCode 377.组合求和IV