我的.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
。什么是覆盖我的全球地图定义以及为什么?
答案 0 :(得分:3)
您可以使用:
(keyboard-translate ?\C-h ?\C-?)
这会将C-h转换为任何地方的退格。
当您执行isearch
或ido-find-file
时,他们会
覆盖迷你缓冲区中的一些键。你可以重新覆盖
每种模式的这些键,但你必须真正为每个模式
您使用的新模式。这就是为什么我建议上面的代码:
模式通常不会将退格重新绑定到不起作用的东西
像退格一样。关键是逻辑 C-h 仍然存在
在迷你缓冲区内寻求帮助,但keyboard-translate
却没有
已经 C-h - 你只有另一个退格。如果你
想要绑定一些命令,你不能绑定到 C-h -
你必须绑定到?\C-?
。
答案 1 :(得分:1)
我的猜测是,当你点击“control and h”时你真的不想删除一个字符,但是当你按下退格键时,Emacs会收到C-h
,对吗?
如果是这样,最好的解决方案是弄清楚如何更改终端模拟器,以便在按退格键时不会向{Emacs发送C-h
(例如,它可以像大多数一样发送C-?
现在的其他终端模拟器。)