为啥是 Ctrl+.当我将它绑定到 Emacs 中的命令时不起作用?

Posted

技术标签:

【中文标题】为啥是 Ctrl+.当我将它绑定到 Emacs 中的命令时不起作用?【英文标题】:Why does Ctrl+. not work when I bind it to a command in Emacs?为什么是 Ctrl+.当我将它绑定到 Emacs 中的命令时不起作用? 【发布时间】:2012-06-22 01:44:53 【问题描述】:

C-. 当我将它绑定到 Emacs 中的命令时,它在终端中不起作用。我在gnome-terminal 和真正的终端 tty1 上尝试了这个程序。我用-nw 标志启动Emacs,然后按C-h kdescribe-key 的命令),然后按C-.。 Emacs 只接收.,没有Ctrl。我如何让它在 Emacs 中工作?

我正在用这个过程绑定键:

(define-key c-mode-base-map (kbd "C-.") 'semantic-ia-fast-jump)

(define-key c-mode-base-map [(control .)] 'semantic-ia-fast-jump)

【问题讨论】:

见***.com/q/7492518/1030675。 【参考方案1】:

简而言之,大多数终端仿真器在它们可以生成的控制字符方面受到限制(原因很简单,它们所模拟的原始终端也受到限制)。

因此,当您按 C-. 时,您的终端很可能不会产生除 . 以外的任何东西(如果是这种情况,这基本上就是您的答案,除非有某种方法可以配置终端以不这样做)。

(当您认为 Emacs 在终端中运行时没有对某些输入进行操作时,您应该尝试验证 Emacs 是否确实接收了您认为的输入。)

如果您的终端正在生成.以外的其他内容,请参阅以下问答以了解有关如何让 Emacs 识别序列的详细信息:

Binding M-<up> / M-<down> in Emacs 23.1.1 Shift-Tab produces cryptic error in Emacs http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/elisp/Translation-Keymaps.html

如果您可以运行 xterm,那么您可能很幸运,因为有一些特定于 xterm 的增强功能。看看以下内容:

Send "C-(" to Emacs in VT100/xterm terminal (Mac OS X's Terminal)? http://www.dur.ac.uk/p.j.heslin/Software/Emacs/Download/xterm-extras.el (我不确定第二个链接是否与此特定情况相关,但似乎值得包括在内)。

其他一些相关问答:

How does one send S-RET to Emacs in a terminal? Why emacs confuse PageDown (<next>) key with M-[?

【讨论】:

还有emacs.stackexchange.com/questions/1020/…

以上是关于为啥是 Ctrl+.当我将它绑定到 Emacs 中的命令时不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

emacs ctrl-space与输入法冲突

为啥我必须将它绑定到 Reactjs 的类组件中的方法

绑定键以增加/减少emacs中的字体大小

Emacs Chrome键绑定

当我将 ImageView 添加到 CardView 或 Fragment 时,为啥我的应用程序会崩溃?

在 Emacs 中全局覆盖键绑定