如何绑定一个键来杀死repl并在emacs上的缓冲区中猛拉

Jul*_*ues 2 lisp emacs slime

您可以假设我使用粘液模式进行repl.

如何创建一个功能键(例如f4)来执行此操作:

  1. 杀死最后一个历史项目(你得到的那些)C-up或者C-down;
  2. 移动到上部缓冲区;
  3. 猛拉,保存缓冲区到文件;
  4. 回到repl.

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

des*_*esu 9

做出你要求的最简单的方法是使用emacs宏.

为什么?因为你刚刚说出了你想要做的事情.并且宏保存您键入的键序列.您可以在emacs中执行一次,并保存按下的键序列.

因此,开始使用录制宏(当你在REPL缓冲区)F3C-x (,然后进行类似M-p C-a C-k C-u - C-x o C-y C-x o(我只是翻译你的请求按键序列),然后键入F4C-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也会进来使用.