1

一些在 GUI 模式下工作的 emacs 键盘绑定在终端模式下不起作用,因为终端只知道如何发送 ASCII 控制代码。当我将键绑定到非 ASCII 控制代码时,有没有办法让 emacs 抱怨,所以我会意外停止这样做?我只是偶尔在终端上运行 emacs,而且通常只是远程运行,而且通常只是因为某些东西坏了,这意味着我最终会在最糟糕的时候发现这种糟糕的情况。

我也有过远程处理的经验,尤其是从一个操作系统到另一个操作系统(例如 Solaris -> Linux),其中甚至修改键都被重新映射(esc <-> ctrl 被交换,或者右 alt 有效但左 alt 无效)。有什么方法可以检测到这种情况何时发生并适当地交换我的键盘绑定?

基本上:每次我在终端远程使用 emacs 时,我都会得到与 GUI 不一致的体验,这很糟糕,我该如何更改我的 emacs 使用以防止这种情况发生。

4

1 回答 1

1

我不知道这样做的好方法:首先,终端只能发送 ASCII 控制代码是不正确的,因为它们可以通过转义序列编码几乎任何东西(例如 xterm 发送特殊的转义序列,例如, CM-up,然后 Emacs 可以识别)。因此,取决于终端能够发送到 Emacs 的事件集(以及 Emacs 能够识别的事件)取决于终端。

如果您想真正安全,您可以将自己限制为键序列被描述为字符串(不是向量,而不是通过 构建的东西kbd)的绑定,这基本上意味着只有 ASCII 字符(包括控制序列)与 Meta 结合。

于 2012-10-17T20:44:32.683 回答