在 Emacs 中将 Evil-Ex-Command 映射到 "ei"

Mapping Evil-Ex-Command to "ei" in Emacs

在 Emacs 邪恶模式下,我试图将字符串 "ei" 绑定到打开我的 init 文件的 ex 命令。这是我想出的:

(defun edit-init () (find-file "~/.emacs"))
(evil-ex-define-cmd "ei" 'edit-init)

当我尝试 运行 ex 命令(使用“:ei”)时,Emacs 告诉我“未知命令 "ei"”。

我检查了 evil-ex-commands 变量,新命令正确地存储在列表中。它看起来像这样:

("ei" . edit-init)

我的第一个想法是用于编辑的 "e" 的默认 ex 命令以某种方式干扰了命令,但是我尝试将 "ew" 绑定到 other-window 并且它工作正常.

我是否遗漏了有关 evil-ex 命令是如何创建的信息?可以使用的字符有限制吗?

谢谢

您需要定义一个命令,而不仅仅是一个函数。换句话说,您的命令缺少 (interactive) 子句:

(defun edit-init ()
  (interactive)
  (find-file "~/.emacs"))