我该如何清除一个绑定或编辑一个emacs包提供的绑定?
比如说,我之前使用M-c来使单词首字母大写。
但是在安装了某个第三方emacs包之后,它被更改成了calc-dispatch。
我想要像之前一样使用M-c来使单词首字母大写,并将calc-dispatch设置为其他操作。
要如何实现这一点呢?
我该如何清除一个绑定或编辑一个emacs包提供的绑定?
比如说,我之前使用M-c来使单词首字母大写。
但是在安装了某个第三方emacs包之后,它被更改成了calc-dispatch。
我想要像之前一样使用M-c来使单词首字母大写,并将calc-dispatch设置为其他操作。
要如何实现这一点呢?
calc-dispatch
的按键映射名称。通常它是模式名称
和模式映射
的组合。py-mode-map
。
第二,在该模式中删除M-c绑定,并使用钩子将其重新绑定到其他键。py-newline-and-indent
)。并将它重新绑定到C-i。因为全局上我将C-j绑定到linum-ace-jump
。这与您的情况类似。(add-hook 'python-mode-hook
#'(lambda ()
(define-key py-mode-map "\C-j" nil)
(define-key py-mode-map "\C-i" 'py-newline-and-indent)))
(global-set-key (kbd "M-c") 'capitalize-word)
这通常是全局设置单词的方式。
如果您想替换这两个单词,可以尝试这样做:
(substitute-key-definition
'capitalize-word 'calc-dispatch (current-global-map))
(define-key KEYMAPNAME (kbd "KEYCOMBO") 'FUNCNAME)
这是针对特定模式的。例如:(define-key emacs-lisp-mode (kbd "M-c) 'capitalize-word)。
(global-set-key (kbd "M-c") nil)
通常是解除一个键的绑定(全局)。
您可以通过谷歌搜索轻松找到更多相关信息。
minor-mode-map-alist
的顺序,如果没有其他方式进行操作),但我的理解是全局键映射被明确地最后搜索,而不仅仅是由于加载顺序的副作用。请参见C-h i g
(elisp) Searching Keymaps
。 - phils