由于某种原因,我得到了默认的M-del键绑定,用于向后杀死单词映射到扫描匹配括号并且重置不起作用,所以我试图在lisp中设置全局键绑定.所以我在〜/ .emacs.d/init.el中写了lisp命令:
(global-set-key(kbd"Mh")'backward-kill-word)
(global-set-key(kbd"M - <\ delete>")'reverse-kill-word)
我用Cx Ce尝试了它们,它们都给出了'反向杀词 - 输出,但只有第一个键绑定工作"Mh",另一个被忽略,而M-del仍在尝试奇怪的扫描动作.删除键在其他地方的emacs中工作,因此看起来"删除"没有被映射到lisp中的物理键(并且反斜杠是在此文本中仅在单词被注释掉时显示).知道使用什么关键字或特殊字符?最好.
(我找了可能已经覆盖了这个命令的库,但我找不到它们)
在某些系统上,delete
密钥被定义为别名C-d
.这是通过function-key-map
GNU Emacs <23和local-function-key-map
GNU Emacs 23完成的.(我在Debian和Ubuntu 10.04下观察到了这种行为.)这种翻译的目的是将编码模式的人与终端的复杂性隔离开来:一种模式想要隐藏删除命令只需要重新绑定C-d
,不要怀疑它是否应该重新绑定delete
(是删除还是删除?)deletechar
或其他东西.
如果存在全局或本地绑定delete
,则会将此转换隐藏到C-d
.但是,如果按ESC delete
,如果没有全局或本地绑定ESC delete
,则第二个键被转换为C-d
.这种翻译优先于ESC delete
as 的解释M-delete
.所以ESC delete
变得等同于C-M-d
.
这可以说是Emacs中的一个错误:效果ESC delete
应该是相同的M-delete
,并且没有理由为什么ESC delete
会运行down-list
与删除无关.
有几种可能的修复方法; 我不知道哪个最好.适用于任何版本的Emacs的是
(global-set-key [?\e delete] 'backward-kill-word)