重新映射iterm2中的键


15

我正在尝试重新映射iTerm2中的一些默认按键组合,并想了解将按键绑定到“发送十六进制代码”时发生的情况。

上一篇文章帮助我开始将ctrl-a和ctrl-e按键组合分别重新映射到cmd-left和cmd-right,但是我也想重新映射其他按键组合。(链接到以前的Stackoverflow帖子)。

我含糊不清地理解其中包含十六进制代码,但是我无法确定下一步该怎么做才能了解正在发生的事情或要做什么。


与bash无关。删除的标签。

Answers:


16

这些十六进制代码只是字节序列。例如,映射一个键组合0x66 0x6f 0x6f使其插入foo0xc3 0xa4如果使用UTF-8,将插入ä。0x1b 0x1b 0x5b 0x43意味着escape escape [ C

一些字节序列(如ANSI转义序列)甚至单个字节(如ASCII控制字符)在终端中都有特殊含义。

要使⌘←和⌘→转到行的开头和结尾,可以将它们分配给0x01(以脱字符号表示的^ A)和0x05(以脱字符号表示的^ E):

  • ⌘←:发送十六进制代码:0x01
  • ⌘→:发送十六进制代码:0x05

您可以通过将assign分配给来使它向前删除\ed

  • ⌥⌦:发送^ [d

在iTerm的首选项中将- ←和programs→更改为\eb\ef也会在不支持readline或emacs样式的键绑定的程序中更改它们。另一个选择是将其添加到〜/ .inputrc

"\e\e[D": backward-word
"\e\e[C": forward-word

您可以运行read并按组合键以查看它们插入了哪些字符。例如^[^[[D,默认情况下,⌥←插入,^[脱字符号表示转义。

另请参见http://code.google.com/p/iterm2/wiki/Keybindings


谢谢。在这里为我的问题寻找解决方案时,我遇到了这个答案。如何查找特定组合键的十六进制代码?(在我的情况我感兴趣的组合Ctrl+Alt+<char><char>ijklu
阿梅里奥巴斯克斯-雷纳

6

我建议安装Many Tricks的Key Codes($ 0)并自己找出快捷方式。

例如,如果您想重新映射(前进)删除字符的默认快捷方式(即Ctrl-D(⌃D)),就像按前进删除键()一样简单,则可以…

  1. 打开应用程序,然后按 Ctrl-D

    关键代码示例

  2. 返回iTerm 2,在iTerm>“首选项”>“键”中添加Unicode快捷方式

    iTerm发送十六进制代码

注意:不要复制和粘贴它,只需键入Unicode即可,不要带空格。


2

我发现最好的方法是发送密钥代码(如@pattulus所述,或使用vim密钥绑定)。

关于键代码的注意事项:实际上,您无法通过如上所述发送unicode字符串来使其工作,如果Control+ D,则需要同时发送修饰符和键以获取代码0x840101 0x4,您需要将其作为代码发送:其中0x840101控制键修饰符是可以通过“ 密钥代码”获得。

关于以vim序列发送的注释:如iTerm2 文档中所述,您可以以vim绑定格式发送密钥代码,例如\<C-d>用于发送Control+ D(注意这\很重要)。

我个人更喜欢vim键绑定,因为它更具可读性,以后您将了解您所做的事情。


1

看看Karabiner

在此工具中,您可以创建特定于应用程序的关键自定义映射。它带有一些工具来帮助实现这一目标。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.