Emacs elisp:如何在邪恶的邪恶插入状态映射中更改特定模式的键绑定

时间:2014-08-06 17:42:36

标签: emacs elisp

我现在已经使用emacs一段时间了,我仍然试图抓住elisp的一瞥。在我的init.el中,我有以下几行:

(define-key evil-insert-state-map (kbd "RET") 'newline-and-indent)
(add-hook 'org-mode-hook (lambda () (define-key evil-insert-state-map (kbd "RET") 'newline)))

这两行elisp的预期效果是仅在org-mode中禁用自动缩进,但为每个其他模式保持自动缩进。但是,虽然此代码确实禁用了org-mode的自动缩进,但它具有无意识的效果,即禁用其他所有内容。有谁知道达到预期效果的方法?

1 个答案:

答案 0 :(得分:1)

您正在寻找evil-define-key

(evil-define-key 'insert org-mode-map (kbd "RET") 'newline)

这将定义return仅在newline insert状态下调用org-mode状态的org。你的钩子正在做的是每次打开{{1}}缓冲区时重新定义全局插入状态映射。