gpt4 book ai didi

Emacs:如何仅在常规缓冲区而不是迷你缓冲区中绑定(bind) key ?

转载 作者:行者123 更新时间:2023-12-05 03:13:33 25 4
gpt4 key购买 nike

我写了一个奇特的函数,我想将其绑定(bind)到TAB。该功能仅在任何非只读文本缓冲区中才有意义。目前,我要么像那样绑定(bind)它:

(global-set-key (kbd "<tab>") 'my-indent-region)

(define-key global-map (kbd "<tab>") 'my-indent-region)

此绑定(bind)的问题是现在制表符补全在迷你缓冲区中不再起作用,这是一项基本功能(例如缓冲区/文件名或 M-x)。

是否可以仅在常规模式下绑定(bind) TAB?我知道我可以使用 define-key some-major-mode-map,但是因为我希望在所有模式下都使用它除了 minibuffer,维护起来会很烦人.因此,我可能正在寻找类似 define-key any-mode-except-minibuffer ... 的东西。

如果不存在这样的功能:是否有解决方法让制表符补全再次在迷你缓冲区中工作?也许我可以在更改全局绑定(bind)后重新设置原始的 minibuffer 选项卡绑定(bind)?我不知道我实际上必须绑定(bind)哪个函数才能使其工作。

最佳答案

经过更多研究后,我在 this answer 中找到了解决问题的方法/解决方案.

显然,我的问题是我绑定(bind)到 (kbd "<tab>") .如果我理解正确的话,我的问题实际上并不是我覆盖了迷你缓冲区的实际键盘映射——我猜它们在进入迷你缓冲区次要模式时被正确加载了。但是,似乎有绑定(bind)到 (kbd "<tab>") 的优先级通过绑定(bind)到 "\t" .根据上面的答案,迷你缓冲区绑定(bind)只使用 "\t" , 所以绑定(bind)到 (kbd "<tab>")阴影他们。我现在改用以下绑定(bind):

(global-set-key "\t" 'my-indent-region)

现在似乎一切正常。

关于Emacs:如何仅在常规缓冲区而不是迷你缓冲区中绑定(bind) key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29468271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com