Emacs 会话 / 项目 / 窗口管理

5
我大部分时间都在处理Ruby on Rails的项目,因此我需要一种方法来保存项目和我正在使用的缓冲区/窗口的状态,主要是因为我经常发现自己会在几分钟内切换到另一个项目,然后回到我之前工作的项目。Desktop.el似乎非常接近我的需求,除了它不能保存窗口配置。
对于熟悉TextMate的人来说,我正在寻找类似textmate项目文件的东西,你可以打开它们,它们会打开编辑器的不同实例,仅打开该项目中的文件。
谢谢, Cezar
6个回答

3
我试图站在你的角度考虑,想出我自己喜欢的Emacs解决方案。最好的解决方案是,有时我会进入一种模式,在这种模式下,我不希望通过处理Emacs中断来搞乱我的窗口,因为这需要不同的Emacs资源(缓冲区/窗口)。例如,假设我正在进行ediff比较,并且想要转到scratch缓冲区测试一个想法,而不干扰我的ediff视角,借用Eclipse的概念。在这种情况下,我通常会使用C-x 5 2打开一个新的frame。如果我已经在显示器上打开了多个frame,则会使用C-x 5 f选择一个命名frame。
对于您的情况,您可能具有一个带有“proj-x”前缀的frame集和另一个带有“proj-y”前缀的frame集。在这种情况下,C-x f proj-x-foo提供了快速切换以处理您的中断,C-x f proj-y-fee将您切换回来。在大多数情况下,我认为您只涉及两个frame,这更容易:C-x f o在两个frame之间切换。
我认为关键点是,使用Emacs,可以“放弃”您正在做的事情,而无需关闭任何内容,做其他事情,然后轻松地回到原始环境。这是Emacs的一个推论,即您可以同时打开数百个文件,即您不需要关闭一个文件,然后再打开另一个文件。打开所有文件并尽情享受吧 :-) 当您采用这种方式时,C-x s是您的好朋友。

我不想要一个新的框架,我只想能够在一个框架中工作的一组文件,并且有多个窗口(通常为2-3个),其中一个应该是dired(不关闭)。 - Cezar Halmagean

3

我喜欢使用window-configuration-to-register (C-x r w <register_name>) 来处理类似你描述的情况。一旦将窗口配置保存到寄存器中,只需使用C-x r j <register_name>即可返回已保存的配置。


1

也许你正在尝试让emacs像一个IDE一样工作,但它并不是。我经常在emacs中打开多个项目,从不关闭emacs,长达数周。这是我多年前选择emacs的主要原因之一。在我的当前项目中,我在Java、Ruby和Lisp之间切换。我还需要编辑jsp、erb、html和css的功能,唯一我还没有解决的问题是javascript。除了完全自定义我的环境的能力外,这就是emacs的强大之处。

我一直都在使用ECB,通常当我移动文件时,它会跟随我,我不是从“窗口”角度工作,而是从“我在这里”的角度工作。特定缓冲区是否打开实际上并不重要。我还使用IDO,所以切换缓冲区非常容易和直观。我通常最多显示两个缓冲区(但可能有很多打开)。M-X s也很有用,可以确保你已经保存,它将枚举所有未保存的缓冲区并提示你。

当我必须关闭emacs时,我通常通过cd到那个文件夹并键入emacs app/controllers/my_controller.rb来快速回到之前的状态。从那里开始,rails导航非常有帮助。M-Shift-down箭头,我们出发了...


在使用Ruby on Rails时,通常会有很多只通过目录路径分隔的独立的HTML文件,当项目中有超过1000个文件时,找到正确的文件会很麻烦,更不用说打开多个项目了。 - Cezar Halmagean
2
你想启用“唯一化”。如果你同时打开了foo/index.html和bar/index.html,它会将缓冲区命名为foo/index.htmlbar/index.html,而不是index.htmlindex.html <1> - jrockway
@jrockway - 这是一个很好的提示! - wentbackward

0

这仅保存窗口,而不是基于项目根目录的文件/缓冲区。 - Cezar Halmagean

0

eproject具有eproject-open-all-project-files,它确保打开当前项目中的所有文件(或者使用前缀arg来选择任意项目),以及eproject-kill-project-buffers,它会关闭当前项目中的所有文件。这让您轻松地开始一个项目,并在完成后清理它们。


嗨,jrockway,你的解决方案只适用于相对较少的文件(不像我的情况一样有数千个文件)。 - Cezar Halmagean
使用eproject打开数千个文件并不比手动打开慢。当然,为什么你的项目会包含数千个文件呢? - jrockway

0

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