Emacs:取消绑定 some-mode-map 的所有键
Emacs: unbind all keys of some-mode-map
我知道,我可以使用 unbind-key
取消绑定密钥。在这种情况下,我必须知道要解除绑定的密钥。但我不知道关键。我只想解绑some-mode-map
的所有键。我不想覆盖它们,我只想解除它们的绑定,然后在 some-mode-map
中定义我自己的键。我知道我可以迭代 some-mode-map
并应用 unbind-key
,但是否有更直接的解决方案?而且我不知道如何迭代 keymap
.
更新
尝试过(正如 在评论中所建议的那样)但没有成功:
(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
绑定会被覆盖。除非我重新定义 neotree-mode-map
,否则不会。我知道我可以用 evil-define-key
获得想要的结果,但我想在它自己的配置文件中保留特定于包的设置。如果我使用 evil-define-key
,neotree
键绑定定义将在 setup-evil.el
而不是 setup-neotree.el
更新 2
和 (setq neotree-mode-map (make-sparse-keymap))
一样有效。
但是 neotree-mode-map
似乎有父映射,这就是 "cleaning" 之后一些键绑定 "come back" 的原因。
我发现的另一件事是,evil
将一些额外信息放入覆盖地图中。
(keymap
...
(override-state . all)
...
)
这就是为什么我应该在evil
配置之前清除地图。
您可以使用以下方法在键盘映射中删除所有绑定:
(setf (cdr <keymap>) nil)
我认为在实践中它很少真正做你想要的,因为会有一些你没有意识到的绑定是有用的(例如那些对应于菜单栏条目的绑定),但你得到你想要的。
至于迭代键盘映射,您可以使用 map-keymap
。
我知道,我可以使用 unbind-key
取消绑定密钥。在这种情况下,我必须知道要解除绑定的密钥。但我不知道关键。我只想解绑some-mode-map
的所有键。我不想覆盖它们,我只想解除它们的绑定,然后在 some-mode-map
中定义我自己的键。我知道我可以迭代 some-mode-map
并应用 unbind-key
,但是否有更直接的解决方案?而且我不知道如何迭代 keymap
.
更新
尝试过(正如
(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
绑定会被覆盖。除非我重新定义 neotree-mode-map
,否则不会。我知道我可以用 evil-define-key
获得想要的结果,但我想在它自己的配置文件中保留特定于包的设置。如果我使用 evil-define-key
,neotree
键绑定定义将在 setup-evil.el
而不是 setup-neotree.el
更新 2
(setq neotree-mode-map (make-sparse-keymap))
一样有效。
但是 neotree-mode-map
似乎有父映射,这就是 "cleaning" 之后一些键绑定 "come back" 的原因。
我发现的另一件事是,evil
将一些额外信息放入覆盖地图中。
(keymap
...
(override-state . all)
...
)
这就是为什么我应该在evil
配置之前清除地图。
您可以使用以下方法在键盘映射中删除所有绑定:
(setf (cdr <keymap>) nil)
我认为在实践中它很少真正做你想要的,因为会有一些你没有意识到的绑定是有用的(例如那些对应于菜单栏条目的绑定),但你得到你想要的。
至于迭代键盘映射,您可以使用 map-keymap
。