如何将邪恶模式(vim样式)宏保存到init.el中?

woo*_*ger 32 emacs evil-mode vim-macros

大约一年前从Vim搬过来后,我正在使用邪恶模式.我做了很多自定义,但还没有找到如何保存vim风格的键盘宏.

我可以使用与Vim完全相同的键在邪恶模式下定义和运行它们.

  • qa 开始录制宏的信.
  • q 停止录音
  • @a 运行宏的信.

我想将其中的一些保存到我的init.el文件中以便在会话之间使用,但我无法在线找到任何引用,并且找不到正确的语法.

如何将这些邪恶模式键盘宏保存到文件中?是否有一些原因我应该使用原生的Emacs键盘宏,有没有办法通过@a键运行这些?

Jor*_*ndo 39

邪恶模式宏并不特殊,它们只是普通的Emacs宏,你以同样的方式保存它们,但是你需要做一些特殊的工作才能让它们进入邪恶的寄存器.

让我们来看一个例子:

在缓冲区中,做qfifoobarESCq.这会将宏保存到f将foobar插入缓冲区的寄存器中.

现在跑M-xname-last-kbd-macroRETmymacroRET.

转到您的init.el文件并执行M-xinsert-kbd-macroRETmymacroRET.

这会将您的宏转储到fset通话中.

(fset 'mymacro [?i ?f ?o ?o ?b ?a ?r escape])
Run Code Online (Sandbox Code Playgroud)

如果你把这个在你的init.el,你将有机会获得命令mymacroM-x.

但是,我们将其保存到寄存器中f,我们希望它在每次启动时都存在.您需要从上面的代码中提取宏向量并将其保存到您init.el喜欢的寄存器中:

;; make sure this is done after evil-mode has been loaded
(evil-set-register ?f [?i ?f ?o ?o ?b ?a ?r escape])
Run Code Online (Sandbox Code Playgroud)

现在您可以访问它了@!

请参阅有关将宏命名和插入文本的文档

  • 这对于最后一个宏来说效果很好,但是如何编辑/保存当前存储在 vim(邪恶)寄存器中的宏以供以后使用,但不是最后一个宏,因此我无法使用内置的 Emacs 方法来管理它? (2认同)