【问题标题】:How does one send S-RET to Emacs in a terminal?如何在终端中将 S-RET 发送到 Emacs?
【发布时间】:2011-04-01 12:27:24
【问题描述】:

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 丢失吗?解决方法?

【问题讨论】:

    标签: macos emacs terminal emacs23 org-mode


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      与其他问答的交叉链接:

      如果您使用的是 xterm,那么modifyOtherKeys 选项可能有助于该绑定。详情请看以下内容:

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

      我怀疑 Emacs 默认会识别这些代码,但如果不是,请参阅input-decode-map,如下所述:Binding M-<up> / M-<down> in Emacs 23.1.1

      【讨论】:

        【解决方案3】:

        查看 TTY here 的说明和替代快捷方式。

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

        【讨论】:

          【解决方案4】:

          一般来说,通过终端发送大量击键是根本不可能的,因为终端模拟了一个旧协议,该协议只允许 256 个单独的键(或者可能只有 128 个)。

          很有可能,当您按下 S-RET 时,Terminal.app 的作用与您按下 RET 时的效果完全相同。完全相同。因此 Emacs 无法区分这两种情况。

          【讨论】:

          • 我担心可能是这种情况。我将把这个问题留一点,看看是否有人知道我应该模拟哪个终端来获得S-RET。这可能是不可能的。目前,终端报告自己为xterm-color,但我可以在配置选项中更改它。不知道它是否能解决任何问题。
          猜你喜欢
          • 1970-01-01
          • 2011-05-19
          • 1970-01-01
          • 1970-01-01
          • 2014-05-15
          • 2018-02-12
          • 2022-11-10
          • 1970-01-01
          相关资源
          最近更新 更多