2012-04-02 27 views
13

Tôi luôn làm việc trên nhiều cơ sở mã cùng một lúc. Thông thường một thư viện nội bộ, một ứng dụng web và một số dịch vụ.Nhóm/tab đệm Emacs

Có cách nào với Emacs để có nhiều bộ đệm mở cho mỗi cơ sở mã nhưng có các bộ đệm được nhóm không? Giống như một tab cho mỗi cơ sở mã hoặc nhóm tôi có thể dễ dàng chuyển đổi giữa.

Tôi đã xem tabbar-mode không phải là những gì tôi đang tìm kiếm. Tôi đang tìm kiếm một cách dễ dàng để nhanh chóng chuyển từ làm việc trên cơ sở mã này sang cơ sở mã khác. Giống như lưu một tập hợp các cửa sổ cho từng dự án và nhanh chóng chuyển đổi giữa chúng.

Bất kỳ ý tưởng nào?

+1

[check this out] (http: //scottfrazersblog.blogspot.com/2009/12/emacs-named-desktop-sessions.html) – Tom

+1

Bạn cần phải làm rõ chính xác những gì bạn đang tìm kiếm. Đây có phải là một tiện ích đồ họa giống như một tab mà bạn nhấp vào không? Điều gì xảy ra sau khi bạn nhấp vào nó? –

+0

Đây là một liên kết đến những gì đã trở thành những gì tôi cho là chuỗi có thẩm quyền về nhóm đệm kiểu tabbar: https://emacs.stackexchange.com/questions/10081/browser-style-tabs-for-emacs – lawlist

Trả lời

7

Một vài gợi ý:

  1. ibuffer là một thay thế tiên tiến cho list-buffers mà bạn có thể liên kết với C-xC-b vào chỗ của nó. Điều này cho phép bạn lọc danh sách bộ đệm theo các tiêu chí khác nhau, kết hợp các bộ lọc thành các nhóm và sắp xếp các nhóm theo bất kỳ cách nào bạn muốn; bạn cũng có thể lưu các bộ lọc và nhóm của mình để khôi phục sau này. Sử dụng C-hm từ bộ đệm ibuffer để xem tất cả các tùy chọn. Xem thêm: Emacs: help me understand file/buffer management

  2. Thử một trong các thư viện giống như màn hình khác nhau cho Emac, chẳng hạn như Elscreen hoặc Escreen. Tôi đã không bao giờ nhận được xung quanh để thử chúng ra bản thân mình, nhưng tôi thu thập rằng bạn có thể có danh sách đệm riêng biệt cho mỗi màn hình, mà có vẻ như nó sẽ phù hợp với mục đích của bạn.

  3. Nếu bạn muốn tách biệt hơn nữa, như vậy khi một dự án 'hoạt động' bộ đệm từ (các) khác không khả dụng, thì tôi không biết cách thực hiện điều đó trong một trường hợp Emac , nhưng trong tình huống đó tôi chỉ đơn giản là bắt đầu nhiều trường hợp của Emacs; một cho mỗi dự án. Emacs là đủ nhẹ trên phần cứng hiện đại rằng đây là một cách tiếp cận hoàn toàn hợp lý.

6

Hãy xem projectile - một quản lý dự án đơn giản và không phô trương cho Emacs. Một trong những tính năng của nó chính xác là chuyển sang bộ đệm từ một dự án cụ thể (C-c p b).

+1

+1 cho đạn. Rất hữu dụng! – Tvaroh

5

Tôi sử dụng ibuffer cho mục đích này, cùng với ibuffer-vc extension của tôi (có sẵn qua Marmalade); phần mở rộng này nhóm các bộ đệm theo dự án kiểm soát phiên bản mà chúng thuộc về, đó là IMO một cách định hướng theo lập trình lý tưởng để nhóm các bộ đệm.

0

Tôi cũng sẽ bỏ phiếu bầu khác. Và có một hướng dẫn tuyệt vời (một phần của một loạt các, trên thực tế) về cách sử dụng đạn và lãnh đạo được cung cấp một cách hiệu quả ở đây:

Exploring large projects with Projectile and Helm Projectile

helm là tuyệt vời như vậy mà tôi không thể sống mà không có nó! Vì vậy, đề nghị khác là để đọc hướng dẫn này:

A Package in a league of its own: Helm

0

@Phils Câu trả lời là một trong những quyền: ibuffer là cách tiêu chuẩn để đi, hài hước BTW rằng the official doc doesn't even mention it.

Cá nhân tôi remap cũ (list-buffers) với nó:

(global-set-key (kbd "C-x C-b") 'ibuffer) 

Đối với các "nhóm" một phần của câu hỏi của bạn, bạn có thể sử dụng này:

(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\*")))))) 
Các vấn đề liên quan