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

时间:2011-11-22 21:50:03

标签: emacs lisp slime

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

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

  1. 删除最后一个历史记录项(您使用C-upC-down获得的项目);
  2. 移动到上层缓冲区;
  3. 猛拉,将缓冲区保存到文件;
  4. 回到repl。
  5. 请逐步指导,因为我是Emacs和Lisp的初学者。

1 个答案:

答案 0 :(得分:9)

提出要求的最简单方法是使用emacs macros

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

因此,使用F3C-x (开始录制宏(当您在repl缓冲区中时),然后创建类似M-p C-a C-k C-u - C-x o C-y C-x o的内容(我只是将您的请求转换为关键序列) ,然后输入F4C-x )。要执行宏,请再次按F4C-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>)。您可以阅读有关设置键therethere的命令的详情。

关于宏的坏处是你将撤消每一步,而不是一次撤消整个宏(但有人可以在这里解决,如果他有一个)。如果你想使用条件或迭代来做一些更严肃的事情,你必须转发你的路径到elisp。只需C-h k周围的一切。 C-h fC-h aC-h b等帮助密钥也会被使用。