在GNU Emacs中,[C-tab]
是什么?考虑:
(version)
"GNU Emacs 23.2.1 (i386-mingw-nt5.1.2600)
of 2010-05-08 on G41R2F1"
(defun key-binding-test ()
(interactive)
(insert " key-binding-test called "))
对于单个字母控制字符,必须在向量中使用字符常量:
(global-set-key [C-l] 'key-binding-test) ; does not work
(global-set-key [?\C-l] 'key-binding-test) ; works
?\C-l
可以在*scratch*
缓冲区中进行评估:
?\C-l
12
但要绑定 C-Tab :
(global-set-key [?\C-tab] 'key-binding-test) ;does not work
; Debugger entered--Lisp error: (invalid-read-syntax "?")
(global-set-key [C-tab] 'key-binding-test) ; works
当我尝试评估C-tab
时:
C-tab ; Debugger entered--Lisp error: (void-variable C-tab)
比较载体的评估:
[?\C-l] ; input
[12] ; result
[C-tab] ; input
[C-tab] ; result
(aref [C-tab] 0) ; input
C-tab ; result, but C-tab can not be evaulated further.
答案 0 :(得分:6)
[C-tab]
是一个向量,请参阅vectors的手册。在那里你会发现一个向量被认为是不变的评估(即它评估自己)。
因此[C-tab]
评估为[C-tab]
,一个元素的向量,符号C-tab
,您可以像这样提取
(aref [C-tab] 0)
在回复第一条评论时添加。
另一个向量是:
[some-symbol another (a list of things) 9]
长度为4
(length [some-symbol another (a list of things) 9])
它包含两个symbols some-symbol
和another
,一个列表(a list of things)
和一个整数9
。
C-tab
只是symbol,就像上面示例中的some-symbol
和another
一样,除非将value cell设置为某个值,否则它们没有任何价值。< / p>
答案 1 :(得分:4)
尝试(kbd "C-TAB")
,例如(global-set-key (kbd "C-TAB") 'key-binding-test)
。
请记住,虽然Tab本身是一个控制序列( C-i ),但根据您所处的位置,它可能无法正常工作。例如,它肯定不会在终端上运行。
您可以尝试查看emacs是否能识别与TAB不同的C-TAB, C-h k C-TAB 。如果帮助显示正常TAB的帮助,那你就不走运了。否则它会说“&lt; C-tab&gt;未定义”。