如何在终端中将S-RET发送给Emacs?

时间:2010-08-20 06:43:05

标签: macos emacs terminal emacs23 org-mode

org-mode中,按M-S-RET(元移位返回)将在新行上创建新的TODO。此密钥序列通过我的终端将M-RET发送到emacs。我已使用C-h c ESC-S-RET检查了此内容,该内容在迷你缓冲区中返回M-RET is undefined

我正在使用Snow Leopard和在Terminal.app中运行的Emacs 23.2.1。没有选项可以在终端键盘首选项中定义RET序列。

知道造成失踪SHIFT的原因是什么吗?解决方法?

4 个答案:

答案 0 :(得分:6)

你可以让Emacs假装它S-RET C-x @ S RET(注意大写S)。

这也适用于添加control,meta,alt,hyper或super修饰符;键入C-x @ C-h作为绑定列表。 Modifier Keys section in the Emacs manual也提到了这一点。

答案 1 :(得分:5)

一般情况下,很多键击根本不可能通过终端发送,因为终端会模拟一个只允许256个独立键(或者只有128个)的旧协议。

当您按下S-RET时,有可能终端完全相同,就像您按下RET一样。因此,Emacs无法区分这两种情况。

答案 2 :(得分:3)

交叉链接到其他Q& As:

如果您使用的是xterm,那么modifyOtherKeys选项可能会促进该绑定。有关详细信息,请参阅以下内容:

Send "C-(" to Emacs in VT100/xterm terminal (Mac OS X's Terminal)?

我怀疑Emacs默认会识别这些代码,但如果没有,那么另请参阅此处所述的input-decode-mapBinding M-<up> / M-<down> in Emacs 23.1.1

答案 3 :(得分:2)

请参阅TTY here的说明和替代快捷方式。

其中一些在Ubuntu Linux(本地和SSH)的终端中为我工作,但并非所有这些都可行。例如,为S-RET(我希望运行org-table-copy-down)提供的替代方案似乎由于某种原因而运行org-clone-subtree-with-time-shift。但是,我发现备选列表很有用,特别是那些带有M-前缀的备用列表。例如,ESC UP M-UP可以在表格中移动文字。