在.emacs中使用global-set-key中的分号表示函数

rot*_*ler 5 emacs elisp

我试图将[Ctrl] - [;]设置为我的.emacs中的键绑定

(global-set-key "\C-;" 'comment-or-uncomment-region)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时它不起作用(我没有收到任何错误信息,它只是没有效果).如果我尝试普通字符(例如将其设置为"\ Cp"),它将工作.

我也试过了

(global-set-key (kbd "C-;") 'comment-or-uncomment-region)
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这个选项,因为对我来说,当我运行"emacs -nw"时它不起作用.有关如何做到这一点的任何想法?

编辑:当我运行时C-hcC-;,emacs -nw我得到输出:

; runs the command self-insert-command
Run Code Online (Sandbox Code Playgroud)

这是完全一样的,当我作为运行C-hc;emacs -nw

所以我认为phils是对的,这是一个终端问题,因为emacs从未真正看到过C-;,它只能看到;

Ste*_*fan 5

IndeedC-;通常不是您的终端能够发送到 Emacs 等底层应用程序的东西(因此它可以在 GUI 下运行,但不能在终端中运行)。但我想知道:为什么你仍然需要这样的绑定,因为它M-;已经绑定到comment-dwim在选择区域时注释/取消注释区域,所以它提供了comment-or-uncomment-region.


phi*_*ils 4

使用(kbd "C-;")绝对正确。

我怀疑当您C-;在运行时键入时emacs -nw,您的终端实际上​​并没有向 Emacs 发送任何内容。

因此,您的问题更可能是如何让您的终端发送C-;到 Emacs(或者如何让 Emacs 识别发送的序列的问题。

如果您运行emacs -Q -nw并输入C-hcC-;,您会收到一条"C-; is undefined"消息吗?

假设这是一个终端问题,这里有一些相关的问答,它们可能会为您指明正确的方向,但这取决于您使用的特定终端。