如何在全球范围内重新绑定Emacs中的密钥?

时间:2013-08-15 12:46:26

标签: emacs keyboard-shortcuts backspace incremental-search

我的.emacsrc

中有这个
(define-key global-map "\C-h" 'backward-delete-char) ;;previously help

然而,当我进行I-search并点击C-h删除一个字符时,emacs使用默认绑定并尝试打开帮助,当我用C-g取消搜索时,它然后执行我开始I-search的文档中的backward-delete-char。

编辑:这让我想知道为什么C-h再次映射到迷你缓冲区内的help。什么是覆盖我的全球地图定义以及为什么?

2 个答案:

答案 0 :(得分:3)

您可以使用:

(keyboard-translate ?\C-h ?\C-?)

这会将C-h转换为任何地方的退格。

当您执行isearchido-find-file时,他们会 覆盖迷你缓冲区中的一些键。你可以重新覆盖 每种模式的这些键,但你必须真正为每个模式 您使用的新模式。这就是为什么我建议上面的代码: 模式通常不会将退格重新绑定到不起作用的东西 像退格一样。关键是逻辑 C-h 仍然存在 在迷你缓冲区内寻求帮助,但keyboard-translate却没有 已经 C-h - 你只有另一个退格。如果你 想要绑定一些命令,你不能绑定到 C-h - 你必须绑定到?\C-?

答案 1 :(得分:1)

我的猜测是,当你点击“control and h”时你真的不想删除一个字符,但是当你按下退格键时,Emacs会收到C-h,对吗?

如果是这样,最好的解决方案是弄清楚如何更改终端模拟器,以便在按退格键时不会向{Emacs发送C-h(例如,它可以像大多数一样发送C-?现在的其他终端模拟器。)