在 emacs 中设置主模式特定的键绑定

在 emacs 中设置主模式特定的键绑定

在我的.emacs文件中,我想为特定主要模式添加一个键绑定(设置coffee-compile-fileC-c C-c咖啡模式)。

我发现了很多关于使用local-set-key和的说明global-set-key,因此一旦我在咖啡模式下打开文件,我就可以轻松添加此绑定,但如果能由来处理就更好了.emacs

答案1

使用模式钩子。 C-h m显示有关主要模式的信息,通常包括它支持的钩子;然后你做类似的事情

(add-hook 'coffee-mode-hook ;; guessing
    '(lambda ()
       (local-set-key "\C-cc" 'coffee-compile-file)))

答案2

您可以在模式特定的映射中定义键,例如:

(add-hook 'coffee-mode-hook
    (lambda ()
        (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))

或者更清楚一点:

(eval-after-load "coffee-mode"
    '(define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file))

coffee-mode第二条语句导致键定义仅发生一次,而第一条语句导致每次启用时都会发生定义(这有点过度了)。

答案3

Emacs 24.4 已被eval-after-load取代with-eval-after-load

** New macro `with-eval-after-load'.
This is like the old `eval-after-load', but better behaved.

所以答案应该是

(with-eval-after-load 'coffee-mode
  (define-key coffee-mode-map (kbd "C-c C-c") 'coffee-compile-file)
  (define-key erlang-mode-map (kbd "C-c C-m") 'coffee-make-coffee)
  ;; Add other coffee commands
)

相关内容