如何区分TAB与Ci?
通常,出于历史原因,emacs将TAB密钥代码和C-i密钥视为相同,参见cf。有关功能键的emacs lisp文档或abo-abo关于“ TAB和?有什么区别?”问题的答案 。 注:在这篇文章中,键编码是TAB,<tab>和C-i; 另一方面tab,Ctrl+ 和+ i是键盘上的物理键。 但是,此刻,emacs将TAB和C-i视为相同,即(equal (kbd "TAB") (kbd "C-i"))-> t。 但是,由于我们不再生活在计算的困境中,所以我发现这非常烦人。有一些建议可以解决此问题,例如 “如何在不更改TAB的情况下将命令绑定到Ci?” Trey的解决方案不适用于我,该变量local-function-key-maps未更改。对其进行修改以使用delete而不是delq修改后的变量,但不会带来resolve ... tab和Ctrl+ i仍然相同。 转换为超级地图似乎是1980年代的解决方法...我可能也想使用Hyper+ i。 input-decode-mapCtrli我正在寻找使用+ 将+ 映射到一些后ASCII控制代码。除了不能与kbd宏一起正常工作外,这意味着必须修改将绑定Ctrl+ 的源代码的所有位i。考虑到所有源代码均已正确修改,这可以说是最好的解决方案。 采用(kbd "<tab>")了tab和(kbd "C-i")(这相当于(kbd "TAB")即在\t字面)为Ctrl+ i 做的工作,但你不得不修改所有这些使用了错误类型的源文件tab[阅读:键码TAB]这是烦人。 例如在github问题和emacs.sx中都提出了这个建议。 这些解决方案都不是真正的解决方案,我宁愿考虑它们(现有bug)的变通办法或黑客手段。 有没有办法强制 emacs映射tab到(kbd "<tab>")和,(kbd "TAB")而Ctrl+ i被映射为(kbd "C-i")缺少对emacs源代码的修改呢? 这种做法应该是在用户完全不可见,这意味着tab像键码<tab>,并TAB应该映射到一个而结合Ctrl+ i类似的键码C-i应该映射到另一个结合。 不太严重的一点是:这里的任何emacs开发人员可以评论是否会在某个时候在emacs源代码中对其进行更改/修复?