Emacs C-. 在终端中不起作用

Emacs C-. 在终端中不起作用

我使用 GNU Emacs,通常喜欢emacs -nw启动终端版本(而不是窗口 GUI 版本)。

我写学校论文,LaTeX所以我用它来flyspell-mode在 emacs 中进行拼写检查。这在 GUI 版本中运行良好,但在终端中,我遇到了按键问题C-.( Ctrl- .)。在 tty 中,这不会执行任何操作,而在terminator或中gnome-terminal,这只会输入一个“。”。

我该怎么做才能让它执行窗口版本中的操作(显示拼写错误的单词的拼写建议)?

编辑:如果这很重要,我正在使用 Ubuntu 12.04 和 Emacs 23.3.1(我相信这是 12.04 repo 的默认设置)。

答案1

看起来这个问题的重要部分已经在评论中得到解答了,但为了解决根本原因,以防您好奇,我认为 ctrl-。由于终端仿真器的一些限制,在终端中不起作用。在标准终端中,ctrl 被定义为发送您按下的键的 ASCII 码减 64(这就是为什么 ctrl-J(74)发送换行符(10)而 ctrl-I(73)发送制表符(9)的原因)。由于句点的 ASCII 码是 46,减去 64 会得到 -18,这是无效的,因为它是负数,并且没有负的 ASCII 码,因此 emacs 无法接收和理解任何内容。

当您在窗口模式下运行 emacs 时,终端仿真器机制将被绕过,而是使用更强大的 X11 键盘处理,它可以处理更模糊的击键(而不是将每个击键减少到一个 ASCII 字符,程序将分别接收原始键和所有适用的修饰符)。因此,除非您对终端仿真器(可能还有 emacs)进行自定义修改,否则可能无法让基于 tty 的 emacs 处理 ctrl-。

答案2

虽然上述答案很好地解释了为什么它不起作用,它并没有真正解决如何才能让它工作。iTerm2你可以这样解决为转义序列添加键映射。我想在terminatorgnome-terminal

相关内容