问题
For example, in the codes of zen-coding, the "C-j" shadows the normal behavior of "C-j" (newline-and-indent
)
(define-key zencoding-mode-keymap (kbd "C-j") 'zencoding-expand-line)
Then how can I unset this keybinding and use C-j
for newline-and-indent
again?
I tried this, but it doesn't work:
(add-hook 'html-mode-hook
(lambda ()
(progn
(zencoding-mode)
(local-set-key (kbd "C-j") 'newline-and-indent))))
Does anyone have ideas about this?
回答1:
The general way to unbind a key (for any keymap) is to define a binding of nil
:
(define-key KEYMAP KEY nil)
For convenience, there are also two standard functions for unbinding from the global keymap and from the local keymap (which is usually the major mode's keymap).
(global-unset-key KEY)
(local-unset-key KEY)
Those ones are interactive commands, as per their respective complements global-set-key
and local-set-key
.
As to your specific example, you probably want something like this:
(eval-after-load "zencoding-mode"
'(define-key zencoding-mode-keymap (kbd "C-j") nil))
来源:https://stackoverflow.com/questions/13965966/unset-key-binding-in-emacs