恢复Emacs会话/桌面

12

我一直在搜索如何恢复emacs会话,但没有找到。我想要恢复所有以前打开的缓冲区,其中一些可能包含erc、shell、目录列表、文件等。

每次打开emacs,我都要花费相当多的时间来安排我的缓冲区;将它们分成行和列,打开一个shell,排列irc频道。这需要一段时间才能开始工作。

我尝试在我的init.el中添加以下内容:

(desktop-save-mode 1)

然后使用M-x desktop-save。这似乎只会恢复打开的文件,而不是在缓冲区中运行的终端或其他任何东西。

我还查看了以下问题:

并阅读了:

这是我emacs会话的屏幕截图示例

一个简单的答案就是专注于真正的工作:P

3个回答

10

我建议一个简单的解决方案-创建一个函数来设置你喜欢的布局。例如,我喜欢在屏幕的下半部分用单独的窗口显示一些IRC频道,这样我可以时不时地查看它们,而在另一个窗口中编程。所以我编写了一些简单的代码来处理窗口分割并按照我的意愿排列我的缓冲区:

;; show some buffers
(defun show-some-buffers (buffer-list)
  (split-window-horizontally)
  (other-window 1)
  (dolist (buffer buffer-list)
    (split-window-vertically)
    (switch-to-buffer (get-buffer buffer))
    (other-window 1))
  ;; at the end we have one extra window we need to delete
  (delete-window)
  (balance-windows))

;; show some erc buffers
(defun show-erc-buffers ()
  (interactive)
  (show-some-buffers '("#emacs" "#clojure")))

这段代码相当简单,没有错误检查,但它会给你提供一个提示。

你可能想考虑使用寄存器来存储一些窗口配置。


非常感谢您详细的回复。经过一些努力,我相信我能够通过这种方法得出一个不错的解决方案。干杯! - Patrick McLaren
非常好的、模块化的解决方案。 - aartist

4

如你所发现,desktop.el和session.el是一个不错的开始,但它们不能恢复窗口布局。

然而,使用revive.el,您可以保存/恢复任意窗口配置,这些配置在重新启动时会被记忆。

此外,请查看这些提示,涉及窗口布局,其中包括winner-mode和将窗口配置保存到寄存器的技巧。


3

除了@Bozhidar关于自动化窗口布局的出色回答(我自己也这样做),您还可以考虑使用GNU Screen,它可以用于在登录时保留任意一组进程。这里有一个相当不错的教程here,由于您将使用emacs,因此您还需要阅读this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接