Emacs. Пакет Tabspaces

Emacs. Пакет Tabspaces

2026-02-20 · 4 мин. для прочтения
blog

Emacs. Пакет Tabspaces.

Содержание

1 Общая информация

  • Репозиторий: https://github.com/mclear-tools/tabspaces
  • Превращает обычные вкладки (tab-bar) в полноценные изолированные рабочие пространства (workspaces), тесно интегрированные с системой проектов (project.el).
  • Каждая вкладка становится независимым контейнером для набора буферов, связанных с определённым проектом или задачей.
  • Это позволяет организовать работу над несколькими проектами одновременно, не смешивая буферы и не теряя контекст.

2 Основные концепции

  • Рабочее пространство (workspace) — это вкладка (tab), которая имеет:
    • собственный список буферов;
    • имя (обычно совпадает с именем проекта или задаётся пользователем);
    • возможность изолировать буферы от других вкладок.
  • Проект — используется встроенный механизм project.el.
    • tabspaces позволяет открыть проект в отдельном рабочем пространстве, автоматически показывая его файлы и настраивая фильтрацию буферов.
  • Фильтрация буферов.
    • Внутри рабочего пространства команды переключения буферов (например, switch-to-buffer) показывают только те буферы, которые принадлежат этому пространству.
    • Остальные буферы «скрыты», хотя физически существуют.
  • Персистентность.
    • Можно сохранять и восстанавливать набор рабочих пространств и их буферов между сессиями Emacs.

3 Ключевые возможности

3.1 Изоляция буферов по рабочим пространствам

  • Благодаря настройке tabspaces-use-filtered-buffers-as-default, команды типа switch-to-buffer, list-buffers и другие показывают только буферы текущего рабочего пространства.
  • Буферы других проектов не мешают и не загромождают список.
  • При этом буферы можно перемещать между пространствами или делать общими (например, *scratch*, *Messages*).

3.2 Интеграция с проектами

  • Команда tabspaces-open-or-create-project-and-workspace позволяет выбрать проект (известный project.el) и открыть его в новой вкладке.
  • Emacs переключается в корень проекта, показывает файлы (например, через dired или project-find-file), и все открытые из этого проекта буферы автоматически привязываются к созданному рабочему пространству.
  • При переключении на вкладку проекта буферы этого проекта становятся активными, а буферы других проектов — скрытыми.

3.3 Управление буферами

  • tabspaces-remove-current-buffer — удаляет текущий буфер из рабочего пространства (перемещает в «домашнее» пространство Default или убивает в зависимости от настроек).
  • tabspaces-kill-buffers-close-workspace — закрывает рабочее пространство и убивает все его буферы.
  • Настройка tabspaces-remove-to-default определяет, куда отправлять буферы, удалённые из пространства: в Default или сразу убивать.

3.4 Поддержка сохранения сессий

  • Включив tabspaces-session, можно сохранять состояние рабочих пространств между запусками Emacs.
  • При следующем запуске автоматически восстанавливаются вкладки и их буферы (с опцией tabspaces-session-auto-restore).
  • Это удобно, чтобы продолжить работу с того же места.

3.5 Настройка фильтрации

  • Можно задать список буферов, которые должны быть видны во всех рабочих пространствах (tabspaces-include-buffers).
  • Можно настроить, как именно фильтровать буферы (например, через собственную функцию).

4 Пример рабочего процесса

  • Пользователь запускает Emacs. Открывается вкладка Default с буферами *scratch* и *Messages*.
  • Он хочет начать работу над проектом myapp. Выполняет M-x tabspaces-open-or-create-project-and-workspace. Выбирает myapp из списка проектов. Emacs создаёт новую вкладку с именем myapp и переключается в неё.
  • В этой вкладке пользователь открывает несколько файлов проекта. Все они теперь принадлежат рабочему пространству myapp.
  • Далее пользователю нужно быстро проверить почту. Он переключается на вкладку Default (например, через C-x t 0 или tabspaces-switch-or-create-workspace). Теперь команда C-x b показывает только буферы Default — почтовые буферы (если они там открыты) и стандартные.
  • Вернувшись в проект myapp, пользователь снова видит только его файлы.
  • В конце дня можно сохранить сессию (если включено автоматически) и завтра продолжить с того же места.

5 Основные клавиатурные сочетания tabspaces

  • Команды собраны под префиксом C-c TAB.

5.1 Главные команды (префикс C-c TAB)

СочетаниеКомандаОписание
C-c TAB stabspaces-switch-or-create-workspaceПереключиться на другое рабоче пространство (вкладку) или создать новое.
C-c TAB otabspaces-open-or-create-project-and-workspaceВыбрать существующий проект и открыть его в отдельном рабочем пространстве.
C-c TAB btabspaces-switch-to-bufferПереключиться между буферами только текущего рабочего пространства.
C-c TAB ktabspaces-kill-buffers-close-workspaceЗакрыть текущее рабочее пространство и убить все его буферы.
C-c TAB rtabspaces-remove-current-bufferУдалить текущий буфер из рабочего пространства (переместить в Default).
C-c TAB Rtabspaces-rename-workspaceПереименовать текущее рабочее пространство.
C-c TAB TABtabspaces-switch-or-create-workspaceБыстрое переключение (то же, что и s).

5.2 Встроенные команды tab-bar

  • Поскольку tabspaces основан на встроенном tab-bar-mode, вам доступны и стандартные сочетания для работы с вкладками.
  • Если вы используете мышь, можно кликать по вкладкам для переключения, а на средней кнопке мыши — закрывать.
СочетаниеКомандаОписание
C-x t 2tab-newСоздать новую вкладку.
C-x t 0tab-closeЗакрыть текущую вкладку.
C-x t otab-nextПерейти к следующей вкладке.
C-x t Otab-previousПерейти к предыдущей вкладке.
C-x t rtab-renameПереименовать вкладку.
C-x t mtab-moveПереместить вкладку.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.