我目前正在使用emacs进行编程。我在.emacs中定义了一个函数,它保存了我的所有工作并执行解释器以在当前打开的shell缓冲区中运行我的工作。通常,我将在一个或多个框架中进行编辑,并在单独的框架中打开外壳。我遇到的问题是当我运行我的保存和执行函数时,一切都被保存,但shell缓冲区然后显示在我正在编辑的框架中。所以我有两个框架显示shell缓冲区,我看不到我刚刚编辑的源代码。很多时候,当我编程时,我会立即将代码的输出与我刚刚编写的代码进行比较。如果必须切换回我的代码缓冲区然后转到另一个shell缓冲区的末尾来查看输出,同时引用刚才编写的代码,这有点烦人。
(defun execute-script ()
"Switch to shell buffer and re-execute the last command."
(interactive)
(save-some-buffers)
(switch-to-buffer "*shell*")
(end-of-buffer)
(comint-previous-input 0)
(comint-send-input))
正如您所看到的,我的功能目前相当原始,只需重新执行shell中最近使用的命令。
我知道Emacs具有切换到不同帧中的缓冲区的功能,因为ido缓冲切换器代码执行此操作。有没有人有什么指示我需要更换我的切换到缓冲区的调用以获得所需的效果?
问候贾尔斯。
答案 0 :(得分:3)
交换
(switch-to-buffer "*shell*")
的
(switch-to-buffer-other-window "*shell*")
这将强制执行两个窗口布局,左侧是前一个缓冲区,右侧是shell缓冲区 修改:如果您使用的是多个框架布局而非多个窗口布局,则可以使用
(switch-to-buffer-other-frame "*shell*")
答案 1 :(得分:1)
您还可以使用pop-to-buffer
,稍后您可以自定义其行为方式,例如通过display-buffer-reuse-frame
,display-buffer-alist
或special-display-regexp
。