【问题标题】:Emacs doesn't recognize C-/ in shell over sshEmacs 无法通过 ssh 在 shell 中识别 C-/
【发布时间】:2023-03-30 04:42:01
【问题描述】:

我通过 Mac 终端中的 Bash 在 shell 模式下使用 Emacs,而 Emacs 无法将 C-/ 识别为撤消键。实际上,它似乎根本无法识别 C-/,因为当我使用 C-hkC-/时没有任何反应>(即describe-key 然后是 C-/)。有任何想法吗?用 C-xu 撤消是不能容忍的。

谢谢。

【问题讨论】:

  • 这不是您可以在 Emacs 中解决的问题:当您按下 C-/ 时,您的终端没有告诉 Emacs 任何信息。你需要配置 Mac Terminal 来为C-/ 发送一些字符序列。

标签: emacs


【解决方案1】:

这里的问题是 Emacs 认为任何修饰键(控制、移位、元等)都可以应用于任何常规键。当 Emacs 直接与操作系统对话时,这是正确的,但当它在传统(伪)终端中运行时,不是,这是您在 ssh 中使用 emacs 时所得到的。在这种情况下,只能使用映射到传统 ASCII 控制字符的修改键。 C-/ 不是这些键之一。

好消息是,因为 Emacs 可以追溯到 ASCII 终端是城里唯一的游戏的日子,undo 的另一个绑定 ASCII 控制字符:C -_(control-underscore,又名 control-shift-minus,又名 U+001F UNIT SEPARATOR)。

Yr hmbl crspdt 实际上并不知道 C-/ 做了什么;他也可以追溯到那些日子,C-_ 是他手指上的线。他不能说你是否会觉得这种击键是可以忍受的——它确实涉及到同时使用 Control 和 Shift——但他怀疑它没有 C-x u 糟糕。 p>

【讨论】:

  • 感谢您的回答。真的希望有某种 hack 让 emacs 识别两键撤消。
  • 一年半后,使用C-_相处得很好。
  • 我不知道是不是因为我使用的是法文键盘但 C-_ 不适合我,我可以使用 control-shift-minus 代替 C-6
【解决方案2】:

终端无法发送C-/。您所需要的只是一种在键入 C-/ 时发送像 C-_ 这样的撤消别名的方法。有两种相对简单的方法可以做到这一点:

  1. 使用 iTerm 2 代替 Mac 终端。它重新映射开箱即用的密钥。
  2. 在 Mac 终端中使用 KeyRemap4MacBookC-/ 重新映射到 C-_
    1. 安装KeyRemap4MacBook
    2. 重启。
    3. 打开系统偏好设置> KeyRemap4MapBook
    4. 启用以下更改键选项(搜索“control+slash”):

      对于应用程序 > 仅在终端启用 > 更改斜杠 (/) 键

【讨论】:

    【解决方案3】:

    emacs 键绑定在终端/控制台中变得不稳定。这是一种皇家痛苦,但它通常是可以修复的。正如@Zach 已经提到的,在终端工作时,密钥的发送方式不同。诀窍是弄清楚 实际 发送到 emacs 的内容,然后将其绑定到您希望执行的命令。 this is a pretty good(虽然是旧的)教程,引导您尝试解决这些类型的问题(3.0 是开始进入您需要做的事情的地方)。

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 2021-04-18
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多