Подтвердить что ты не робот

Буферные группы Emacs/вкладки

Я всегда работаю над несколькими базами кода одновременно. Обычно это внутренняя библиотека, веб-приложение и некоторые службы.

Есть ли способ с Emacs открыть несколько буферов для каждой базы кода, но сгруппированы эти буферы? Как вкладка для каждой базы кода или групп, я могу легко переключаться между ними.

Я проверил tabbar-mode, который не является тем, что я ищу. Я ищу простой способ быстро перейти от работы над одной базой кода к другой. Как сохранение набора окон для каждого проекта и быстрое переключение между ними.

Любые идеи?

4b9b3361

Ответ 1

Несколько предложений:

  • ibuffer - это расширенная замена list-buffers, которую вы можете привязать к C-x C-b на своем месте. Это позволяет фильтровать список буфера по различным критериям, объединять фильтры в группы и упорядочивать группы, как вам угодно; вы также можете сохранить свои фильтры и группы для восстановления позже. Используйте C-h m из буфера ibuffer, чтобы просмотреть все параметры. См. Также: Emacs: помогите мне понять управление файлами/буферами

  • Попробуйте использовать одну из различных экранных библиотек для Emacs, таких как Elscreen или Экран. Я никогда не пытался их опробовать самостоятельно, но я понимаю, что у вас могут быть отдельные списки буферов на каждый экран, который, похоже, подходит для ваших целей.

  • Если вы хотите еще большего разделения, так что когда один проект "активен", буфер из другого (-ов) недоступен, то я не знаю, как это сделать в одном экземпляре Emacs, но в этой ситуации я бы просто начал несколько экземпляров Emacs; по одному для каждого проекта. Emacs достаточно лёгкий на современном оборудовании, что это вполне разумный подход.

Ответ 2

Посмотрите projectile - простую и ненавязчивую библиотеку управления проектами для Emacs. Одна из его особенностей - это точно переключение на буферы из определенного проекта (C-c p b).

Ответ 3

Я использую ibuffer для этой цели вместе с расширением ibuffer-vc (доступно через Marmalade); эти группы расширений буферизуются в соответствии с проектом управления версиями, к которому они принадлежат, что является IMO идеальным для программистов способом группирования буферов.

Ответ 4

Я тоже дам очередной выстрел. И есть отличный учебник (часть серии, на самом деле) о том, как эффективно использовать снаряды и шлем:

Изучение крупных проектов с помощью снарядов и снарядов для снарядов и снарядов

helm настолько велик, что я не могу жить без него! Итак, еще одно предложение - прочитать этот учебник:

Пакет в собственной лиге: Шлем

Ответ 5

@Ответ на вопрос правильный: ibuffer - это стандартный способ пойти, смешно BTW, что официальный документ даже не упоминает об этом.

Я лично переназначаю старый (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\*"))))))