1

现在我正在尝试在 emacs 中使用 evil 插件,以便我可以拥有 vim 的编辑能力和 emacs 的可扩展性。现在,我正在尝试移植 .vimrc 中我最喜欢的部分之一:无论我上次执行的宏是什么,都让空格重复。在我的 .vimrc 中,它很简单

nore <Space> @@

我试图在我的 .emacs 文件中做同样的事情

(define-key evil-normal-state-map " " (lambda () (interactive) (evil-execute-macro 1 "@")))

@@ 重复最后一个宏很好,但是点击空格会给我错误

After 0 kbd macro iterations: No previous macro

我对 lisp 和 evil 还很陌生,所以我确定我做错了什么,我将不胜感激。

4

1 回答 1

2

您可以将其与 vim 类似地绑定:

(define-key evil-normal-state-map " " (kbd "@@"))

关于您的代码: 的第二个参数evil-execute-macro应该是一个字符,即?@. 但这仅在evil-execute-macro交互调用时才成立,因为相应寄存器的内容仅在interactive表单中检索。

这归结为:正确的调用是(evil-execute-macro 1 last-kbd-macro).

于 2013-10-11T15:30:24.640 回答