Emacs 键绑定方式

Table of Contents

一、key-translation-map 优先级最高

(define-key key-translation-map (kbd "your-key") (kbd "target-key"))

在任何位置按下 “your-key”,编辑器都将执行 “target-key” 所绑定的命令。

无论当时处于何种编辑状态,是否有minor-mode触发,该映射都不受影响,属于优先级最高的键绑定方式。

由于映射键是完全的跳转到了另一个键上,所以一旦目标键的定义发生了变化,该键也会随之受到影响。

注销方式:把这个 key 重新映射为它自己。

二、minor-mode-map 优先级第二

(define-key some-minor-mode-map (kbd "your-key") 'your-command)

仅在 minor-mode 激活时有效,定义方便且优先级高,不用担心键冲突。

注销方式:绑定为 nil

三、local-set-key 优先级第三

(local-set-key (kbd "your-key") 'your-command)

local-set-key 主要是在各种 major-mode 下使用,一般是通过 hook 设置:

(add-hook 'some-major-mode-hook '(lambda () (local-set-key ...)))

通过这种方式设置的键绑定仅在该 major-mode 下生效,不影响其他 major-mode。

注销方式:绑定为 nil ,或者:

(local-unset-key (kbd "your-key")

四、global-set-key 优先级最低

(global-set-key (kbd "your-key") 'your-command)

最简单的键绑定方式,一行搞定,无须关心到底是哪个 keymap。然而需小心在某些 major-mode 时会被覆盖。

注销方式:绑定为 nil ,或者

(global-unset-key (kbd "your-key"))