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
: Сохраняйте буферы.