Emacs全球集合C-TAB的关键

时间:2009-05-27 16:43:53

标签: emacs key-bindings

我正在尝试在Emacs中为Ctrl + TAB设置键绑定。我使用了以下电话:

(global-set-key (read-kbd-macro "C-TAB") 'my-func)

然而,每当我使用它时,我都会得到一个

<C-tab> is undefined

错误消息。尝试将绑定设置为“C-tab”会导致出现错误消息。

如何设置我对C-TAB的绑定?

6 个答案:

答案 0 :(得分:49)

与其他人建议的不同,如果您想在其他版本的Emacs中使用相同的配置文件,最好使用kbd(或read-kbd-macro这基本上是相同的事情) ; kbd适用于Emacs和XEmacs的多个版本,其中键序列的内部表示不同。

(global-set-key (kbd "<C-tab>") 'my-func)

read-kbd-macro使用的输入格式记录在edmacro-mode的文档字符串中:

  
      
  • 特殊字RET,SPC,TAB,DEL,LFD,ESC和NUL表示   特殊控制字符。这些词必须用大写字母书写。

  •   
  • 尖括号中的单词,例如&lt; return&gt;,&lt; down&gt;或&lt; f1&gt;,表示   功能键。 (注意,在标准配置中,   功能键&lt; return&gt;和控制键RET是同义词。)   您可以在单词RET,SPC等上使用尖括号,但它们   在那里不需要。

  •   

这有点遗憾;第一个项目符号点中引用的TAB是TAB的ASCII字符,添加Control修饰符会对其进行无意义的处理。当你按下Control-Tab时,Emacs会看到它(通过你的窗口系统;它不能在文本终端中工作)作为<tab>和一个Control修饰符,你可以将其表示为C-<tab>或{{1 }}

答案 1 :(得分:42)

(global-set-key [C-tab] 'my-func)

答案 2 :(得分:11)

这是因为您错误地使用了read-kbd-macro。当你看到绑定到键的内容时:

C-h k C-TAB

Emacs告诉你:

<C-tab> is undefined.

您需要包含&lt;&gt;在您read-kbd-macro的调用中。

(global-set-key (read-kbd-macro "<C-tab>") 'my-func)

并且,我不知道如何生成<C-TAB>,但它与<C-tab>不同。

(equal (kbd "<C-TAB>") (kbd "<C-tab>"))
->
nil

答案 3 :(得分:6)

请注意,您也可以互动方式致电global-set-key。然后,您可以使用repeat-complex-command查看正确的绑定命令(另请参阅KeybindingGuide):

  1. M-x: global-set-key
  2. 键入您想要的组合键
  3. 使用C-x ESC ESCrepeat-complex-command)查看apropiate命令。在你的情况下,我得到:

    (global-set-key (quote [C-tab]) (quote my-func))
    

答案 4 :(得分:3)

请尝试使用更简单的语法?

,而不是使用read-kbd-macro
;(global-set-key [(control tab)] 'my-func)

也许更简洁的语法会有所作为?

有关read-kbd-macroglobal-set-key的详情。

答案 5 :(得分:1)

在gnu emacs lisp参考手册的第21.1节“密钥序列”中,它们使用\ t来引用代表Tab键。

使用Lisp参考手册中显示的语法,我将使用以下命令:

(global-set-key (kbd "C-\t") 'my-func)