在 VT100/xterm 终端(Mac OS X 的终端)中向 Emacs 发送“C-(”?

Posted

技术标签:

【中文标题】在 VT100/xterm 终端(Mac OS X 的终端)中向 Emacs 发送“C-(”?【英文标题】:Send "C-(" to Emacs in VT100/xterm terminal (Mac OS X's Terminal)? 【发布时间】:2011-05-19 06:42:57 【问题描述】:

是否可以通过 VT100/xterm 终端(Mac OS X 终端)以任何方式将密钥“C-(”发送到 Emacs?是否可以发送转义序列来实现等效?

我怀疑根本问题是不存在将控制与字符“(”(以及使用 shift 产生的其他此类字符)结合起来的概念。

注意:使用 Cocoa Emacs 不是一种选择。需要“C-(”的原因是 paredit.el 在其他组合键中使用它,最好不要重新映射它(因为将它放在“C-(”)上是有意义的。

【问题讨论】:

【参考方案1】:

VT100 终端不能这样做,因为没有与( 对应的^( 控制字符。但是,xterm 有所谓的“modifyOtherKeys”模式,它允许为这样的组合发送唯一的键码。

要启用它,请设置 modifyOtherKeys 资源,例如在~/.Xdefaults:

XTerm*vt100.modifyOtherKeys: 1

这样,Ctrl+( 将发送以下键码:

^[[27;6;40~

虽然这相当长,所以引入了另一种类似的键码格式,可以通过设置 formatOtherKeys 资源来启用:

XTerm*vt100.formatOtherKeys: 1

这样,Ctrl+( 发送:

^[[40;6u

在这两个键码中,40 是( 的十进制 ASCII 码,6 代表 Ctrl。

有关详细信息,请参阅 man xterm 和 http://invisible-island.net/xterm/ctlseqs/ctlseqs.html。不知道 Terminal.app 是否支持其中任何一个。

【讨论】:

谢谢,这几乎是正确的。难题的一部分是找到会生成“C-(”的转义码,您提供了它——我设法验证它也适用于 MacOS X 的终端。但是现在我注意到 MacOS X 的终端很遗憾不提供任意映射用于转义序列的键(在本例中为 Ctrl + 括号)——只能映射函数、箭头和其他一些键。 iTerm2 将允许您重新映射任意键以转义序列。 4 岁多,还在救人。好人@ak2 :)

以上是关于在 VT100/xterm 终端(Mac OS X 的终端)中向 Emacs 发送“C-(”?的主要内容,如果未能解决你的问题,请参考以下文章

MAC OS X 终端命令入门

text 在Mac OS X的终端上启动Pentaho Kettle

谁知道Mac OS X的终端上打开文件的命令是啥?急!!!

MAC OS X 终端命令入门 (简单常用整理)

Mac OS X 终端中的 Vim:逐字移动光标

在 Mac OS X 上将代码粘贴到终端窗口中的 vim