2012-04-02 245 views
13

我总是在同一时间处理多个代码库。通常是一个内部库,一个Web应用程序和一些服务。Emacs缓冲区组/标签

Emacs有没有为每个代码库打开多个缓冲区的方法,但将这些缓冲区分组?就像我可以轻松切换每个代码库或组的选项卡一样。

我已经签出tabbar-mode这不是我要找的。我正在寻找一种简单的方法来快速从一个代码库切换到另一个代码库。就像为每个项目保存一组窗口并在它们之间快速切换一样。

任何想法?

+1

[检查了这一点(HTTP: //scottfrazersblog.blogspot.com/2009/12/emacs-named-desktop-sessions.html) – Tom 2012-04-02 09:49:15

+1

你需要澄清你到底在找什么。它是一个像点击一个标签的图形小部件吗?点击后会发生什么? – 2012-04-02 10:02:04

+0

这里是一个链接,它已成为我认为是tabbar风格缓冲区分组上的权威线程的链接:https://emacs.stackexchange.com/questions/10081/browser-style-tabs-for-emacs – lawlist 2017-08-17 20:34:16

回答

7

几点建议:

  1. ibufferlist-buffers一种先进的更换可以绑定到C-XC-B在它的位置。这可让您按各种条件过滤缓冲区列表,将过滤器组合到组中,然后根据需要排列组;您还可以保存过滤器和组以稍后恢复。使用C-hm从ibuffer缓冲区中查看所有选项。另请参阅:Emacs: help me understand file/buffer management

  2. 尝试Emacs的各种屏幕类库之一,例如ElscreenEscreen。我从来没有想过要自己尝试一下,但我认为你可以在每个屏幕上有单独的缓冲列表,这似乎适合你的目的。

  3. 如果你想要更大的分离,例如当一个项目处于“活动”状态时,其他缓冲区不可用,那么我不知道在单个Emacs实例中这样做的方式,但在这种情况下,我只会启动多个Emacs实例;每个项目一个。 Emacs在现代硬件上足够轻量,这是一个完全合理的方法。

6

看看projectile - 一个简单而不显眼的Emacs项目管理库。其特点之一就是切换到特定项目的缓冲区(C-c p b)。

+1

+1弹丸。很有用! – Tvaroh 2013-06-10 17:23:05

5

我用ibuffer为了这个目的,连同我的ibuffer-vc extension(可通过Marmalade);该扩展根据它们所属的版本控制项目对缓冲区进行分组,这是IMO理想的面向程序员的缓冲区分组方式。

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\*"))))))