一些快捷方式不适用于以C-c开头的emacs

时间:2014-07-24 22:47:30

标签: emacs keyboard-shortcuts haskell-mode

在Haskell模式下,快捷方式C-c C-=被定义为执行something

尝试使用此快捷方式时,我意识到emacs无法识别快捷方式C-c C-=

的确,当我在emacs上尝试快捷方式时,虽然我按了C-c =,但未定义缓冲区写C- C-=。我和其他一些符号有问题,比如'。'要么 '§'。但是C-c C-lC-c C-c等快捷方式可以使用。

我尝试删除.emacs,但我遇到了同样的问题。

朋友和我有同样的问题。

我们都在ArchLinux(64位)上,我们在控制台中使用emacs。键盘是一种讽刺。

问题来自emacs? Arch Linux?

2 个答案:

答案 0 :(得分:1)

您的终端无法发送Emacs C-=,因此您无法使用该密钥序列。 (如果Emacs 收到它,识别它,但这不会发生。)

您的选择是:

  • 运行GUI Emacs。
  • 使用 M-x name-of-command RET (对于任何与您无法使用的键序列绑定的命令)。使用 Ch m 查看主模式的绑定,或 Ch b 查看 all 当前绑定,以了解这些命令名称是什么。
  • 为相关命令创建新的自定义键绑定(即终端可以发送给Emacs的绑定)。
  • 查找具有增强键序列功能的其他终端仿真器。绝大多数都不会比你拥有的更好,因为他们都坚持他们所效仿的终端的局限性。我所知道的最有能力的是http://invisible-island.net/xterm/xterm.html,但您可能需要自己编译,然后期望花费大量时间进行配置。 (但这不是一个简单的解决方案,xterm需要一个GUI环境,因此运行GUI Emacs 很多更简单。)
  • 使用 Cx @ c < key> 而不是 C-< key>

使用最后一个选项,您可以使用终端可以发送的序列来伪造无法发送的序列。
Cc C - = 将变为 Cc Cx @ c =

如果您真的想使用最后一个选项,可以设置自定义绑定以简化序列(在某些情况下可能,以避免与现有序列冲突)。有关详细信息,请参阅https://stackoverflow.com/a/24804434/324105的末尾。

答案 1 :(得分:1)

添加到phils' post - 另一个选项是Emacs包(我写的),它可以教Emacs和终端如何正确识别所有PC键盘键和修饰键组合:

https://github.com/CyberShadow/term-keys

默认配置已包括编码键组合,如 Ctrl = ,以及类似的变体。