我不使用Slime,但是假设它使用comint-mode,那么我认为以下内容可能会起作用:
(defun my-slime-test-run ()
(interactive)
(delete-other-windows)
(split-window-below)
(with-selected-window (next-window)
(switch-to-buffer "slime-repl")
(goto-char (point-max))
(insert "(test-run)")
(comint-send-input)))
(global-set-key (kbd "<f3>") 'my-slime-test-run)
可能有更好的方法来完成这个任务,但希望这能让你了解如何编写elisp函数来执行编辑器中的任务(请注意函数的读取方式非常类似于一组编辑器指令--您可以通过将要使用的按键转换为等效代码--甚至不编写代码,只需记录和保存键盘宏,就可以做很多事情)。
使用C-hf函数名称
RET获取该函数/宏调用的文档。
对于绑定键,我使用C-hkF3检查Emacs如何引用该键,然后将该字符串用作kbd
的参数(请注意,您可以使用该序列找到绑定到任何给定键序列的函数名称,如果需要,可以在代码中使用它)。
许多事情如果您不知道它们,那么它们就不会那么明显,但是考虑到这个代码库非常庞大(并且存在时间非常长),这是可以预料的。
不可否认,Emacs 的自我文档化特性是其最好的优点之一。如果您不知道自己正在寻找什么,可以使用
C-uC-ha 搜索与函数名称匹配的模式(同样适用于变量、值、库和文档;有关此功能的更多信息,请参见
M-: (info "(emacs) Apropos")
RET)。此外,info 手册(包括索引 - 在任何特定手册中按下
I
或
i
,或使用
info-apropos
命令一次搜索所有 info 手册)也是非常有帮助的。
C-x 2
不是一个模式;它只是调用了函数split-window-below
。不可否认,这种区分可能被认为是稍微任意的——模式函数具有与任何其他函数相同的功能,而全局次要模式(如menu-bar-mode
)影响的是帧而不是缓冲区——但模式大多数提供给个体缓冲区的行为,并且按照惯例它们的函数名总是以-mode
结尾。因为模式是 Emacs 的重要组成部分,如果您不使用这个术语来引用其他函数,就可以避免一些混淆。 - philsC-h t
。在那之后,你可能会发现在这里搜索包含该术语的问题和答案会很有帮助:http://stackoverflow.com/search?q=[emacs]+tutorial - phils