我如何在emacs中绑定C-=?

问题描述 投票:6回答:5

我的.emacs文件中的此s表达式无法产生预期的结果:

(define-key global-map (kbd "C-=") 'djhaskin987-untab-to-tab-stop)

为什么我不能将命令绑定到Ctrl + =

编辑进行澄清:

我在Debian的emacs23-nox的标准内部版本中使用urxvt-256colors,除了我重新编译了--disable-iso405776(或类似的东西),以便Ctrl + Shift不会不要做奇怪的“插入角色”的事情。我不知道这是否会影响任何事情。例如,C-M-i发送M-TAB,我不明白。

EDIT II

抱歉,我不清楚。功能djhaskin987-untab-to-tab-stop中包含行(interactive)。这部分有效。

emacs key-bindings
5个回答
7
投票

在终端中,TAB由与C-i相同的字节序列表示。通常,终端对于C-=没有特殊的字节序列,因此它将仅发送=。 Emacs对此无能为力。但是您可能可以教您的终端仿真器发送您选择的某些特殊字节序列(有关此信息,请查看终端仿真器的文档),之后您可以教Emacs将其识别为C-=(与(define-key input-decode-map "...thebytes..." [?\C-=])之类的内容)。


8
投票

接受的答案与link in the first comment to it的结合足以开始使用完整的解决方案。步骤是:


1
投票

问题是您在终端中使用了emacs。终端不允许使用“ C- =“。在图形emacs中尝试您的功能,它将起作用。您将不得不为终端找到另一个键绑定。


0
投票

您要绑定的功能必须是交互式的。试试:


0
投票

萨姆·布莱曼,谢谢!我一直想让C-TAB在iterm2中工作很长时间。通过删除C-TAB的内置首选项键并使用您的方法,我能够做到这一点。通过以下内容,我可以像进入桌面编辑器一样,被切换到远程Linux机器中,并快速切换项目中的许多开放缓冲区。(define-key global-map (kbd "C-=") (lambda () (interactive) (djhaskin987-untab-to-tab-stop)))

© www.soinside.com 2019 - 2024. All rights reserved.