(global-set-key (kbd "C-j") 'avy-goto-char-in-line)
(global-set-key (kbd "C-k") 'avy-goto-char-in-line)
第二行起作用,第一行无效,用的是Emacs26 mac port。
eval-buffer
后,C-j
绑定的仍然是eval-print-last-sexp
,是因为global-set-key
优先级不够高吗?
(global-set-key (kbd "C-j") 'avy-goto-char-in-line)
(global-set-key (kbd "C-k") 'avy-goto-char-in-line)
第二行起作用,第一行无效,用的是Emacs26 mac port。
eval-buffer
后,C-j
绑定的仍然是eval-print-last-sexp
,是因为global-set-key
优先级不够高吗?
C-h k C-j
可以看到生效的按键绑定在哪个 keymap 中,在第一行 found in xxx-map
。
应该是由于优先级导致的, global map 是最后兜底的 map 。
你的判断没错。如果要解决这个问题,可以试试这两种办法
取消 Major Mode 对 C-j
的绑定
(define-key lisp-interaction-mode-map (kbd "C-j") nil)
提高 C-j
的优先级
;; 如果有装 bind-key.el;
;; 这个 C-j 的优先级成为最高,比 Minor Mode 还高
(bind-key* "C-j" #'emacs-version)
最简单的办法是具体的优先级不管,直接看found in xx-map
,然后对那个map define-key