我一直在同时处理多个代码库。通常是内部库,Web应用程序和一些服务。
有没有办法让Emacs为每个代码库打开多个缓冲区,但是这些缓冲区是否已分组?就像每个代码库或组的选项卡一样,我可以轻松切换。
我检查了tabbar-mode这不是我想要的。我正在寻找一种简单的方法来快速从一个代码库工作切换到另一个代码库。就像为每个项目保存一组窗口并快速切换它们一样。
有什么想法吗?
答案 0 :(得分:7)
一些建议:
ibuffer
是list-buffers
的高级替代品,您可以在其位置绑定到 C-x C-b 。这使您可以按各种标准过滤缓冲区列表,将过滤器组合成组,然后根据需要排列组;您还可以保存过滤器和组以便以后恢复。使用ibuffer缓冲区中的 C-h m 查看所有选项。另见:Emacs: help me understand file/buffer management
尝试使用Emacs的各种类似屏幕的库之一,例如Elscreen或Escreen。我自己也没有尝试过,但我知道你可以在每个屏幕上设置单独的缓冲区列表,这似乎符合你的目的。
如果你想要更大的分离,那么当一个项目“活跃”时,来自其他项目的缓冲区不可用,那么我不知道在单个实例中这样做的方法Emacs,但在那种情况下,我只需启动Emacs的多个实例;每个项目一个。 Emacs在现代硬件上足够轻巧,这是一种完全合理的方法。
答案 1 :(得分:6)
查看projectile - 一个简单且不显眼的Emacs项目管理库。其中一个功能是从特定项目切换到缓冲区( C-c p b )。
答案 2 :(得分:5)
为此,我使用ibuffer
和ibuffer-vc
extension {可通过Marmalade获得);此扩展根据它们所属的版本控制项目对缓冲区进行分组,这是IMO一种理想的面向程序员的缓冲区分组方式。
答案 3 :(得分:0)
我也会给投射物另一次投票。并且有一个很好的教程(实际上是一系列的一部分),关于如何有效地使用这里提供的射弹和舵:
Exploring large projects with Projectile and Helm Projectile
掌舵太棒了,没有它我就活不下去!所以另一个建议是阅读本教程:答案 4 :(得分:0)
@Phils答案是正确的:ibuffer是标准的方式,有趣的BTW the official doc doesn't even mention it。
我个人将旧(list-buffers)
重新映射到它:
(global-set-key (kbd "C-x C-b") 'ibuffer)
至于"分组"你的问题的一部分,你可以使用这个:
(defvar ibuffer-saved-filter-groups
'(("home"
("emacs-config" (or (filename . ".emacs.d")
(filename . ".emacs")))
("Org" (or (mode . org-mode)
(filename . "OrgMode")))
("Faust" (or (mode . faust-mode)
(filename . "\\.dsp\\'")))
("Help" (or (name . "\*Help\*")
(name . "\*Apropos\*")
(name . "\*info\*"))))))