我写了一个奇特的函数,我想绑定到TAB。该功能仅在任何非只读文本缓冲区中有意义。目前,我绑定,要么像:Emacs:如何仅在常规缓冲区中绑定密钥而不在minibuffer中?
(global-set-key (kbd "<tab>") 'my-indent-region)
或
(define-key global-map (kbd "<tab>") 'my-indent-region)
与此结合的问题是,现在标签完成并在迷你缓冲区中,这是一个重要的功能不再工作(如对于缓冲区/文件名称,或M-x
)。
是否可以绑定TAB只适用于普通模式?我知道我可以使用define-key some-major-mode-map
,但是因为我希望它在所有模式(除了小型缓冲区的之外),所以这会很烦人。因此,我可能在寻找类似define-key any-mode-except-minibuffer ...
的东西。
如果这样的功能不存在:是否有解决方法来让tab-completion在minibuffer中再次工作?也许我可以在更改全局绑定后重新设置原始的minibuffer选项卡绑定?我无法弄清楚,实际上我必须绑定哪个函数才能使其工作。
嗯,也许我的问题还不够清楚。我确实知道“导致问题”的原因:我新的全局选项卡绑定了花哨的my-indent-region函数。如果我删除它,那么“问题”就消失了,但我希望的结合也是如此。澄清:我的目标是将TAB绑定到'my-indent-function'_except_,用于在我输入minibuffer时。你的段落“你可以做的另一件事......”可能是我正在寻找的东西,但我不知道我必须如何绑定才能获得默认行为。 – bluenote10 2015-04-06 18:01:18
看我的编辑。你的问题很清楚。也许我的回答不够清楚? ;-) – Drew 2015-04-06 18:32:49