我已经使用emacs有一段时间了,现在我还在尝试掌握elisp的窍门。在我的init中。我有以下几行:
(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模式下禁用自动缩进,但在其他模式下保持自动缩进。然而,虽然这段代码确实禁用了org模式的自动缩进,但它也无意中禁用了其他模式的自动缩进。有人知道达到预期效果的方法吗?
您要找的是evil-define-key
:
(evil-define-key 'insert org-mode-map (kbd "RET") 'newline)
这将定义return
只在org-mode
中调用insert
状态的newline
。钩子所做的是在每次打开org
缓冲区时重新定义全局插入状态映射。