在emacs中取消设置键绑定

Han*_*Sun 25 emacs elisp emmet

例如,在zen编码的代码中,"Cj"隐藏了"Cj"(newline-and-indent)的正常行为

(define-key zencoding-mode-keymap (kbd "C-j") 'zencoding-expand-line)
Run Code Online (Sandbox Code Playgroud)

然后,我怎么可以不设置这个键绑定,并使用C-jnewline-and-indent一次?

我试过这个,但它不起作用:

(add-hook 'html-mode-hook
          (lambda ()
            (progn
              (zencoding-mode)
              (local-set-key (kbd "C-j") 'newline-and-indent))))
Run Code Online (Sandbox Code Playgroud)

有没有人有这个想法?

phi*_*ils 39

取消绑定键(对于任何键映射)的一般方法是定义绑定nil:

(define-key KEYMAP KEY nil)
Run Code Online (Sandbox Code Playgroud)

为方便起见,还有两个标准函数用于从全局键映射和本地键映射(通常是主模式的键映射)中解除绑定.

  • (global-unset-key KEY)
  • (local-unset-key KEY)

这些是互动命令,根据它们各自的补充global-set-keylocal-set-key.

至于你的具体例子,你可能想要这样的东西:

(eval-after-load "zencoding-mode"
  '(define-key zencoding-mode-keymap (kbd "C-j") nil))
Run Code Online (Sandbox Code Playgroud)

  • 也许这应该是一个完整的问题,但如果我还不知道它是什么,那么找出键映射名称的好方法是什么? (2认同)
  • @SamuelEdwinWard使用Ch k,然后键入键绑定 (2认同)