在org-mode
中,按M-S-RET
(meta-shift-return) 将TODO
在新行上创建一个新行。这个键序列M-RET
通过我的终端发送到 emacs。我已经检查了这个C-h c ESC-S-RET
,它M-RET is undefined
在迷你缓冲区中返回。
我正在使用 Snow Leopard 和在 Terminal.app 中运行的 Emacs 23.2.1。没有RET
在终端键盘首选项中定义序列的选项。
知道是什么导致了失踪SHIFT
吗?解决方法?
你可以让 Emacs 假装它得到S-RET
了C-x @ S RET
(注意大写S
)。
这也适用于添加 control、meta、alt、hyper 或 super 修饰符;类型C-x @ C-h
为绑定列表。Emacs 手册中的修改键部分也提到了这一点。
通常,通过终端发送大量击键是根本不可能的,因为终端模拟了一个旧协议,该协议只允许 256 个单独的键(或者可能只有 128 个)。
很有可能,当您按下 S-RET 时,Terminal.app 会执行与按下 RET完全相同的操作。因此 Emacs 无法区分这两种情况。
与其他问答的交叉链接:
如果您使用的是 xterm,那么该modifyOtherKeys
选项可能会促进该绑定。有关详细信息,请参阅以下内容:
在 VT100/xterm 终端(Mac OS X 的终端)中向 Emacs 发送“C-(”?
我怀疑 Emacs 默认会识别这些代码,但如果不是,请参见input-decode-map
此处所述:Binding M-<up> / M-<down> in Emacs 23.1.1
请在此处查看 TTY 的说明和替代快捷方式。
其中一些在 Ubuntu Linux 的终端中对我有用(本地和通过 SSH),但并非所有这些似乎都有效。例如,提供的替代方案S-RET
(我希望运行org-table-copy-down
)似乎org-clone-subtree-with-time-shift
由于某种原因而运行。但是,我发现替代列表很有用,尤其是带有M-
前缀的替代列表。例如ESC UP
用于M-UP
在表格中移动文本。