2

你可以假设我正在使用 slime 模式进行 repl。

如何制作功能键(例如f4)来执行此操作:

  1. 杀死最后一个历史项目(你用C-upor得到的那些C-down);
  2. 移动到上缓冲区;
  3. yank,将缓冲区保存到文件;
  4. 回到repl。

请把它作为一步一步的指南,因为我完全是 Emacs 和 Lisp 的初学者。

4

1 回答 1

9

最简单的方法是使用emacs 宏

为什么?因为你刚刚说出了你想做什么。宏会保存您键入的键序列。您可以在 emacs 中执行一次,并保存按键顺序。

F3因此,使用or开始录制宏(当您在 repl 缓冲区中时)C-x (,然后进行类似M-p C-a C-k C-u - C-x o C-y C-x o(我刚刚将您的请求转换为键序列),然后键入F4or C-x )。要执行宏,F4再次按 或C-x e

如果你弄乱了 . 你可以中断录制宏C-g。反之亦然,如果您弄得一团糟并且发送了错误消息,您的宏录制(有时令人沮丧)或评估(这是一个功能,因为您可以通过按住 来制作可以正常工作的宏F4)将被中断。

如果以后想使用这个宏,可以用M-x name-last-kbd-macro. 这将允许您用作命令,键入M-x <your macro name><your macro name>- 宏的名称)。这不会为以后的会话保存它,只需命名它。

要保存命名宏,M-x insert-kbd-macro请在.emacs文件中使用。这将在当前点插入 elisp 代码,执行该代码会将宏绑定到命令名称(每次启动 emacs 时都会执行)。

要将其绑定到某个键,而不是每次都从 启动它M-x,请将其插入到您的.emacs文件中:(global-set-key [f12] '<your-macro-name>). 您可以阅读更多关于在那里那里设置键的命令。

宏的坏处是您将撤消每一步,而不是一次性撤消整个宏(但有人可能会在这里带来解决方案,如果他有的话)。如果你想让事情变得更严肃,使用条件或迭代,你必须将你的路径转发到 elisp。只是C-h k周围的一切。C-h f, C-h a,等帮助键C-h b也将使用。

于 2011-11-22T23:02:53.890 回答