在插入模式下重新绑定 ESC

rebinding ESC in insert mode

Evil中,ESC在插入模式下的默认绑定是(evil-normal-state nil)

我想像这样在插入模式下重新绑定 ESC:

(define-key evil-insert-state-map (kbd "ESC") (lambda () (interactive) (message "hello")))

但是,当我尝试这样做时,出现了意外行为。首先,绑定不会改变。出于某种原因,我不明白它在插入模式下也会中断 M-x

为什么会这样?

这可能与以下事实有关:ESC 是一个 ASCII 字符,用于各种 "escape sequences",Emacs 通常将其视为 Meta 修饰符的替代项.

IIRC Evil 通过将 ESC 键映射到 ESC 字符(代码 27)来处理这个问题,这在 Emacs 中是默认完成的,而是映射到 escape 事件。所以你可能想试试:

(define-key evil-insert-state-map [escape]
            (lambda () (interactive) (message "hello")))