Emacs. Пакет Bufler
2025-07-14
·
3 мин. для прочтения
Emacs. Пакет Bufler.
Содержание
1 Общая информация
- Репозиторий: https://github.com/alphapapa/bufler.el
- В отличие от
ibuffer, который требует ручной настройки групп, Bufler автоматически создаёт иерархию на основе заданных правил.
2 Особенности
Автоматическая группировка буферов
- Буферы распределяются по группам с использованием Lisp-функций, которые можно настраивать под свои нужды.
- Например, буферы могут группироваться по:
- директориям файлов;
- активным режимам (например,
org-mode,python-mode); - состояниям контроля версий (VC).
Динамические рабочие пространства
- Каждый фрейм Emacs может быть привязан к определённому рабочему пространству (группе буферов).
- Это позволяет изолировать контексты и быстро переключаться между проектами.
Пакет поддерживает вкладки (
tab-bar-mode) для отображения рабочих пространств.Гибкие правила группировки
- Правила задаются через макрос
bufler-defgroups, который упрощает создание сложных иерархий. - Можно создать вложенную структуру:
(bufler-defgroups ("Projects" ("Org" (lambda (buf) (string-match-p "\\.org$" (buffer-file-name buf)))) ("Code" (lambda (buf) (member (buffer-file-name buf) '(".py" ".js")))) ("Temporary" (lambda (buf) (string-prefix-p "*" (buffer-name buf))))))
- Правила задаются через макрос
3 Основные команды и режимы
Режимы работы:
bufler-mode: активирует рабочие пространства для фреймов.bufler-tabs-mode: отображает рабочие пространства в виде вкладок.
Команды для работы с буферами:
M-x bufler-switch-buffer: переключается между буферами в текущем рабочем пространстве. С префиксомC-uпоказывает все буферы.M-x bufler-workspace-frame-set: назначает текущее рабочее пространство для фрейма.M-x bufler-workspace-buffer-set: присваивает буферу имя рабочего пространства.
4 Примеры использования
- Для начала работы достаточно активировать
bufler-modeи использоватьbufler-switch-buffer. - Переключение между проектами
- Нажмите
M-x bufler, затемf, чтобы выбрать рабочее пространство. - Используйте
C-u C-u M-x bufler-switch-bufferдля переключения между проектами.
- Нажмите
- Сохранение состояния рабочих пространств
- Команды
bufler-workspace-saveиbufler-workspace-openпозволяют сохранять/загружать настройки через пакетburly.
- Команды
5 Рабочий процесс
- Запустите Emacs.
- Активировать
bufler-mode. - Откройте несколько буферов, найдите несколько файлов и т. д.
- Когда вам нужно переключить буферы, используйте
M-x bufler-switch-buffer- Буферы представлены группами с их «контурными путями», что упрощает поиск нужного буфера, поскольку они организованы по проекту, каталогу, режиму и т. д.
- Если вы хотите сосредоточиться на буферах определенной группы:
C-u C-u M-x bufler-switch-buffer RETи выберите буфер;- или
M-x bufler-workspace-frame-set RETи выберите рабочее пространство; - или
M-x bufler RETи нажмитеf, чтобы сфокусировать текущий фрейм на рабочем пространстве, илиFчтобы открыть новый фрейм, ориентированный на рабочее пространство.
- В следующий раз, когда вы вызовите
bufler-switch-bufferв этом фрейме, он будет предлагать только буферы из группы буферов этого фрейма, что упрощает поиск буферов, связанных с текущим проектом. - Когда вам нужно переключиться на буфер в другой группе, не меняя рабочее пространство фрейма, используйте
C-u M-x bufler-switch-bufferдля выбора из всех буферов во всех группах. - Когда вам нужно уничтожить или сохранить несколько буферов одновременно, используйте
bufler-list, поместите курсор на группу, которую вы хотите убить или сохранить, и нажмитеkилиs. - Если вы хотите увидеть, какие буферы не сохранены (отмечены значком
*) или не зафиксированы (обозначаетсяedited) изменения, вы можете просмотреть список буферов (включитьbufler-vc-stateдля отображения состояния VC для каждого буфера; по умолчанию эта функция отключена, поскольку получение актуальной информации о состоянии VC буфера может быть медленным).
6 Сочетания клавиш для буфера Bufler
- Используйте
C-h m, чтобы получить самый актуальный список привязок. ?Показать привязку клавиш.1–4: переключение разделов.M-1–M-4: переключение разделов верхнего уровня.RET: переключиться на буфер.SPC: предпросмотр буфера, сохраняя фокус на списке буферов.g: обновить список буферов (с префиксом, принудительно обновить состояние VC буферов и группировку).f: установить рабочую область текущего фрейма на группу в точке (с префиксом, не установлено).F: создайте новый фрейм, рабочим пространством которого будет группа в точке.N: добавить буферы в именованное рабочее пространство (с префиксом, удалить из него).k: уничтожить буферы.s: Сохраняйте буферы.