如何将一行代码复制到REPL缓冲区并立即执行它,在Emacs中?

时间:2013-09-05 01:38:02

标签: debugging emacs

在使用2个缓冲区调试期间(左侧是“编辑缓冲区”,右侧是“执行缓冲区”)我经常遇到需要将一行代码从“编辑缓冲区”复制到“执行缓冲区“并立即执行它(可能没有离开”编辑缓冲区!)。

是否存在绑定?如果没有,我该如何创建一个?

3 个答案:

答案 0 :(得分:1)

可能值得询问您使用的是哪种语言以及使用何种语言或REPL。例如,如果您使用Slime with Common Lisp,那么通常不需要转到实际的REPL缓冲区来评估代码。在您的代码缓冲区中,您可以将点放在Lisp表单的末尾,然后执行C-x C-e - 在emacs-lisp-mode中评估表单的相同绑定 - 它将在REPL中对其进行评估。我不记得了,但是C-M-x可能在使用Slime的Common Lisp缓冲区中的工作方式与Emacs Lisp一样。

至少其他一些模式的工作方式相同 - 在shen模式的缓冲区中,你可以使用相同的方式使用相同的方式进行活动的下级会话,并且我使用的方案模式也是如此。我认为如果你有一个较差的REPL,相应的语言模式将重新绑定这些键来评估REPL中的表单,这是相当标准的。

可能值得......

答案 1 :(得分:1)

选择要执行的行和 C-c C-r 通常可以完成这项工作。只要hook存在。

答案 2 :(得分:0)

我不知道现有的绑定,但您可以轻松创建一个宏来移动到另一个窗口,然后向后移动。整个过程将是:

  1. 启动宏C-x (
  2. 转到另一个窗口C-x o
  3. Yank C-y
  4. 向后移动1个窗口C-u -1C-x o
  5. 停止宏录制C-x )
  6. 命名为宏C-x C-k n yank-other-window
  7. 接下来,您要保存该功能并将其绑定到启动Emacs时加载的ELisp文件中的密钥:

    1. 将宏插入文件M-x insert-kbd-macro <RET> yank-other-window <RET>
    2. 绑定到密钥(global-set-key [C-M-.] 'yank-other-window)