gpt4 book ai didi

Emacs:取消绑定(bind) some-mode-map 的所有键

转载 作者:行者123 更新时间:2023-12-03 23:17:59 27 4
gpt4 key购买 nike

我知道,我可以使用 unbind-key 取消绑定(bind)键.在这种情况下,我必须知道要解除绑定(bind)的 key 。但我不知道 key 。我只想解绑some-mode-map的所有键.我不想覆盖它们,我只想解除绑定(bind),然后在 some-mode-map 中定义我自己的键。 .我知道我可以迭代 some-mode-map并申请unbind-key ,但可能有更直接的解决方案?而且我不知道如何迭代 keymap .

更新

尝试过(正如 phils 在评论中所建议的那样),但没有奏效:

(use-package neotree
:config
(setq neotree-mode-map (make-sparse-keymap))
(define-key neotree-mode-map (kbd "RET") 'neotree-enter)
)
(use-package evil
:init
(setq evil-overriding-maps '((neotree-mode-map)))
)
neotree-mode-map仍未清洁。并根据包配置顺序, evil绑定(bind)被覆盖。除非我重新定义 neotree-mode-map .我知道我可以通过 evil-define-key 获得想要的结果,但我想将包的特定设置保留在其自己的配置文件中。如果我雇用 evil-define-key , neotree键绑定(bind)定义将在 setup-evil.el 中而不是 setup-neotree.el
更新 2

Answer(setq neotree-mode-map (make-sparse-keymap)) 一样有效.
但似乎 neotree-mode-map有父 map ,这就是为什么一些键绑定(bind)在“清理”之后“回来”。
我发现的另一件事是, evil在覆盖 map 中放入一些额外的信息。
(keymap 
...
(override-state . all)
...
)

这就是为什么我应该在 evil 之前清除 map 的原因。配置。

最佳答案

您可以使用以下内容在键盘映射中删除所有绑定(bind):

(setf (cdr <keymap>) nil)

我认为在实践中它很少能真正做到你想要的,因为会有一些你没有意识到有用的绑定(bind)(例如那些对应于菜单栏条目的绑定(bind)),但你得到了你想要的。

至于迭代keymap,你可以使用 map-keymap为了那个原因。

关于Emacs:取消绑定(bind) some-mode-map 的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782226/

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