你可以假设我正在使用 slime 模式进行 repl。
如何制作功能键(例如f4
)来执行此操作:
- 杀死最后一个历史项目(你用
C-up
or得到的那些C-down
); - 移动到上缓冲区;
- yank,将缓冲区保存到文件;
- 回到repl。
请把它作为一步一步的指南,因为我完全是 Emacs 和 Lisp 的初学者。
最简单的方法是使用emacs 宏。
为什么?因为你刚刚说出了你想做什么。宏会保存您键入的键序列。您可以在 emacs 中执行一次,并保存按键顺序。
F3
因此,使用or开始录制宏(当您在 repl 缓冲区中时)C-x (
,然后进行类似M-p C-a C-k C-u - C-x o C-y C-x o
(我刚刚将您的请求转换为键序列),然后键入F4
or 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
也将使用。