当前位置:  开发笔记 > 运维 > 正文

编写lisp emacs密钥绑定并且无法指定<delete>字符

如何解决《编写lispemacs密钥绑定并且无法指定<delete>字符》经验,为你挑选了1个好方法。

由于某种原因,我得到了默认的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中的物理键(并且反斜杠是在此文本中仅在单词被注释掉时显示).知道使用什么关键字或特殊字符?最好.

(我找了可能已经覆盖了这个命令的库,但我找不到它们)



1> Gilles 'SO- ..:

在某些系统上,delete密钥被定义为别名C-d.这是通过function-key-mapGNU Emacs <23和local-function-key-mapGNU Emacs 23完成的.(我在Debian和Ubuntu 10.04下观察到了这种行为.)这种翻译的目的是将编码模式的人与终端的复杂性隔离开来:一种模式想要隐藏删除命令只需要重新绑定C-d,不要怀疑它是否应该重新绑定delete(是删除还是删除?)deletechar或其他东西.

如果存在全局或本地绑定delete,则会将此转换隐藏到C-d.但是,如果按ESC delete,如果没有全局或本地绑定ESC delete,则第二个键被转换为C-d.这种翻译优先于ESC deleteas 的解释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)

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有