Emacs无法通过ssh识别shell中的C- /

时间:2011-10-01 02:59:12

标签: emacs

我在Mac终端中通过Bash在shell模式下使用Emacs,并且Emacs不识别 C - / 作为撤消键。实际上似乎根本没有识别 C - / ,因为当我使用 Ch k C - / (即describe-key然后 C - / )。有任何想法吗?用 C-x u 撤销是不能容忍的。

感谢。

3 个答案:

答案 0 :(得分:32)

这里的问题是Emacs认为任何修饰键(control,shift,meta等)都可以应用于任何常规键。当Emacs直接与操作系统通信时,情况确实如此,但当它在传统(伪)终端内运行时,这是您在ssh中使用emacs时所获得的。在这种情况下,只能使用映射到传统ASCII控制字符的修改键。 C - / 不是其中一个键。

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

实际上,你知道 C - / 做了什么;他也可以追溯到那些日子,并且 C -_ 就是他的手指。他不能说你是否会发现这个键击是可以忍受的 - 它 涉及使用Control和Shift - 但他怀疑它比 Cx u 更糟糕。

答案 1 :(得分:13)

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

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

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

答案 2 :(得分:1)

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