在Emacs中保留窗口布局

72

我已经按照一定的方式设置了我的Windows操作系统。那么,如何将这些设置保存下来以便日后调用?

5个回答

74
我有时会使用C-x r w <register>将窗口布局存储在一个寄存器中,以及C-x r j <register>(其中<register>是一个单个字符)以便跳回到它。
虽然这是一种不错的方式来存储几个窗口布局,你可以在一段时间后返回它们,但我发现winner-mode在某些方面更加方便。(例如,您无需命名这些配置)。
只需要在您的.emacs文件中添加(winner-mode 1),将winner-undowinner-redo绑定到方便的快捷键上(或使用IMHO笨拙的预定义快捷键C-c <left>C-c <right>),您就可以切换回以前的窗口布局了。
另请参见:M-: (info "(emacs) Window Convenience")M-: (info "(emacs) RegConfig")

在获胜模式下给窗口布局命名,这样你就不必在多个撤销/重做级别之间循环,以便回到你想要的状态。 - johnbakers
@OpenLearner 嗯,如果您想要为布局命名,使用胜者模式相比普通寄存器有什么好处? - danlei

31

我知道你已经接受了一个答案,但是因为我从另一个角度理解了你的问题(关于布局),当我在寻找一些工具来保存我的emacs窗口布局时,这个问题出现在我的搜索结果中。所以我想提一下:

workgroups.el

它的目的是保存和恢复emacs窗口的布局和更多其他功能。


这正是我在谷歌搜索时寻找的答案。非常感谢! - Paul
workgroups.el非常棒,但它与ECB完全不兼容:(...所以我仍在使用Escreen。 - jimeh

27

看看emacs的 桌面。虽然我没有可用的emacs,但我相信当您安装emacs时,它是标准lisp软件包的一部分。

使用desktop库将Emacs从一个会话保存到另一个会话。一旦您保存了Emacs桌面——缓冲区、文件名、主模式、缓冲区位置等等——随后的Emacs会话将重新加载已保存的桌面。


2
我使用desktop-save-mode来存储缓冲区,并使用workgroups来存储我的框架和窗口的排列。https://github.com/tlh/workgroups.el。 - hekevintran
4
对于某些人来说,此答案可能会产生误导。我相信作者混淆了“框架”和“窗口”的概念。链接的桌面软件包仅支持恢复框架(在emacs之外被称为窗口),但实际的emacs窗口并未得到保留。此外,因为作者似乎没有真正尝试过该功能,所以我给它点了反对票。 - robert
1
被踩了,作者在推荐库作为解决方案之前应该先使用它。 - Indicator
我可以确认它并不像上面引用的描述那样工作!它会恢复所有缓冲区,但不会恢复窗口布局。问题似乎在于窗口本身被填充了“计算出”的内容(例如带有各种设置的Org日程表)!因此,为了实际恢复我之前的状态,它要么必须重新计算所有内容,要么将缓冲区内容写入磁盘。由于它似乎都没有做到这些事情,因此作为真正的“检查点”机制的用途有限。 - Joe Corneli

3

如果您只想稍后恢复窗口布局,请尝试使用Layout Restore


布局恢复功能很好用,可以将布局与缓冲区关联,并提供保存布局、恢复布局和删除布局的功能。然而,它的代码比较老旧,使用了一些阻止其他模式正常运行的建议。将一系列布局与缓冲区关联的想法很好,但我认为应该检查一下代码。 - undefined

1
如果您想将布局保存在硬盘中,desktop-save是一个选项。
如果您需要在emacs进程的生命周期内存储多个布局(例如,使用emacsclient连接到长时间运行的emacs守护程序),则可以使用C-x r f <register>将框架布局存储在某个寄存器中,使用C-x r j <register>进行恢复。
由于我时不时地远程连接到工作站来做一些事情,断开一段时间后再重新连接,恢复布局可以帮助我无缝地继续工作(请注意,在这种情况下,通过C-x r w存储的窗口布局将会丢失)。

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