`C-[` 在邪恶的本地模式下不会从插入模式中逃脱

`C-[` does not escape from insert mode in evil local mode

我刚开始在我的 emacs 中使用 vim。虽然大多数 docs/wikis 建议在全局打开邪恶模式,但作为一开始的 emacs 用户,我真的更喜欢在本地保持邪恶模式。这意味着,当我需要模型编辑时,我将在该本地缓冲区中打开邪恶模式。为此,我写了一段 elisp 来切换 on/off 邪恶模式:

(defun toggle-evil-local-mode ()
"Toggle on and off evil mode in local buffer."
(interactive)
(if evil-local-mode
    (turn-off-evil-mode)
  (turn-on-evil-mode)))

(global-set-key (kbd "s-e") 'toggle-evil-local-mode)

然而,有一件事困扰着我。我不能使用 C-[ 从插入或可视模式转义到正常模式(emacs 将击键读取为 ESC- 并在回显区域等待更多输入),但 Esc 键工作正常.但是如果我全局打开邪恶模式,C-[ 就和 Esc 键一样工作。

您可能会注意到我使用的是来自键绑定的 Mac。虽然我目前可以使用 Esc 键,但如果我将来升级到带有那些邪恶触摸条的新 MBP 怎么办?那么有什么办法可以解决这个问题吗?任何建议将不胜感激。

看起来像是 Evil 中的错误。让我知道这是否有效:

(defun turn-on-evil-mode-fixed-escape ()
  "Turn on Evil in the current buffer AND `evil-esc-mode'. This makes C-[ work
like <escape> when using `evil-local-mode'."
  (interactive)
  (turn-on-evil-mode)
  (evil-esc-mode 1))