Emacs. Пакет org-workbench

Emacs. Пакет org-workbench

2026-02-28 · 8 мин. для прочтения
blog computer-science

Emacs. Пакет org-workbench

Содержание

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

  • Репозиторий: https://github.com/yibie/org-workbench
  • Реализует систему цифровых карточек (digital card workbench).
  • Главная идея — предоставить временное, изолированное пространство, где вы можете, как на реальном столе, свободно перемещать и перегруппировывать карточки с заметками, не затрагивая исходную структуру ваших файлов.
  • Когда вы хотите собрать идеи из разных заметок в одну статью, традиционный подход сталкивается с трудностями: прямое изменение оригинальных файлов нарушает их структуру, а постоянное переключение между файлами приводит к потере контекста.
  • org-workbench предлагает решение: создаётся «рабочий стол» (workbench), куда извлекаются нужные фрагменты заметок в виде карточек.
  • Здесь вы можете безопасно экспериментировать с их порядком и комбинациями.
  • Все карточки находятся на одном уровне иерархии, что делает их перемещение и реорганизацию максимально простыми.

1.1 Возможности

  • Система цифровых карточек
    • вы можете добавить на рабочий стол любой заголовок (heading) из Org-mode или целый файл (например, заметку Org-roam) как отдельную карточку.
  • Гибкое управление рабочими столами
    • для разных проектов или тем можно создать несколько независимых рабочих столов, состояние каждого автоматически сохраняется.
  • Удобные операции с карточками
    • на рабочем столе карточки легко перемещать вверх/вниз (M-↑ / M-↓), удалять (C-c C-k);
    • они не связаны исходной иерархией и находятся на одном уровне.
  • Двунаправленная связь с исходными файлами
    • если в заметках используется система ID (как в Org-roam, Org-brain и др.), карточки org-workbench устанавливают связь с исходным файлом;
    • вы можете перейти (RET) к исходному файлу для редактирования, а затем синхронизировать (C-c s c) изменения обратно в карточку.
  • Визуализация и экспорт
    • рабочий стол отображается в виде понятного списка карточек.
    • Вы также можете экспортировать этот список в набор Org-ссылок (org-workbench-export-links), чтобы вставить его в другие документы.

2 Настройка

2.1 Основные параметры

  • Длина содержимого карточки
    • Эта переменная определяет, сколько символов из исходной заметки будет отображаться под заголовком карточки на рабочем столе.
      ;; Установить лимит отображаемого текста в 500 символов (значение по умолчанию)
      (setq org-workbench-card-content-length 500)
      

2.2 Настройка системы ID

  • Система ID отвечает за:

    • привязку карточки к исходному файлу;
    • возможность перехода к источнику (RET);
    • синхронизацию изменений (C-c s c).
  • Работает для пакетов:

    • org-roam;
    • org-brain;
    • org-supertag.
  • По умолчанию org-workbench пытается автоматически определить, какой пакет используется.

  • Можно принудительно включить или отключить эту возможность.

    ;; Включить систему ID (если автодетект по какой-то причине не сработал)
    (setq org-workbench-enable-id-system t)
    
  • Можно отключить автоматическое определение пакетов или указать свой список пакетов, при наличии которых система ID будет активирована.

    ;; Отключить автоматическое определение пакетов
    (setq org-workbench-auto-detect-id-packages nil)
    
    ;; Явно указать, какие пакеты включают систему ID
    (setq org-workbench-id-packages '(org-roam org-brain org-supertag))
    

3 Основные команды

3.1 Добавление карточек

  • Добавить все поддерево (рекомендуется): M-x org-workbench-add-subtree или C-c w a

    • Наведите курсор на любой заголовок
    • Все заголовки в поддереве будут извлечены в виде отдельных карточек.
  • Добавить только текущий заголовок: M-x org-workbench-add-heading или C-c w h

    • Наведите курсор на любой заголовок
    • Добавляется только текущий заголовок, исключая его подзаголовки и содержимое.
  • Добавить весь файл как карточку: M-x org-workbench-add-file или C-c w f

    • Откройте любой файл .org
    • Выполните команду из любого места в файле.
    • Весь файл добавляется в виде одной карточки.
    • Идеально подходит для заметок в org-roam или для работы с файлами.
    • Карточки с файлами помечаются [FILE] префиксом на рабочем столе.

3.2 Управление рабочими местами

  • M-x org-workbench-manage

  • Создавайте новые рабочие столы для различных проектов.

  • Переименовать или удалить существующие рабочие столы.

  • Легко переключайтесь между рабочими столами

3.3 Операции с картами в Workbench

  • Переместить карты : M-↑=/ =M-↓ для перемещения карт вверх/вниз
  • Для перемещения между карточками используйте символы : n / p или C-n / C-p
  • Удалить карту : C-c C-k чтобы удалить текущую карту
  • Очистить верстак : C-c w c чтобы удалить все карты
  • Обновить : g для обновления изображения на экране

3.4 Расширенные возможности (при включенной системе идентификации)

  • Перейти к источнику : RET чтобы перейти к исходному местоположению карточки.
  • Синхронизация одной карты : C-c s c для синхронизации текущей карты с её источником.
  • Синхронизировать все карточки : C-c s a для синхронизации всех карточек с их источниками.
  • Экспорт ссылок : C-c C-e (M-x org-workbench-export-links) для экспорта всех ссылок на карточки в новый буфер.

4 Сочетания клавиш

  • org-workbench по умолчанию не устанавливает никаких сочетаний клавиш.
  • Вот рекомендуемые сочетания:
;; Suggested key bindings for org-mode
(with-eval-after-load 'org
  (define-key org-mode-map (kbd "C-c w a") 'org-workbench-add-subtree)
  (define-key org-mode-map (kbd "C-c w h") 'org-workbench-add-heading)
  (define-key org-mode-map (kbd "C-c w f") 'org-workbench-add-file)
  (define-key org-mode-map (kbd "C-c w m") 'org-workbench-manage)
  (define-key org-mode-map (kbd "C-c w s") 'org-workbench-show))

5 Рабочий процесс (workflow) для org-workbench

5.1 Подготовка рабочего пространства

  • Прежде всего вам понадобятся заметки, организованные в Org-mode с заголовками (headings).
  • Желательно, чтобы у заголовков были уникальные ID — это позволит использовать функции перехода к источнику и синхронизации.
  • Если вы используете org-roam, org-brain или org-supertag, ID уже есть.
  • В противном случае можно включить систему ID вручную.

5.2 Создание рабочего стола

  • Рабочий стол — это отдельный буфер, в котором будут собираться карточки.

  • Команда: M-x org-workbench-manage

  • В появившемся буфере вы можете:

    • создать новый рабочий стол (c),
    • переименовать (r),
    • удалить (d),
    • выбрать существующий для работы (просто нажать RET на его имени).
  • После выбора откроется пустой буфер рабочего стола.

  • Он автоматически сохраняется, так что можно закрыть Emacs и вернуться к работе позже.

5.3 Добавление иерархии как карточки

  • Теперь нужно наполнить рабочий стол материалом.
  • Перейдите в любую заметку (например, в буфер с файлом Org-roam или просто в .org файл).
  • Установите курсор на заголовок, который хотите превратить в карточку, и выполните:
    • M-x org-workbench-add-subtree
    • Весь текст под этим заголовком (поддерево) будет скопирован в текущий рабочий стол как новая карточка.
    • В рабочем столе вы увидите заголовок и краткое содержание.
  • Можно добавлять карточки из разных файлов и из разных мест — все они окажутся на одном уровне в рабочем столе.

5.4 Добавление файла как карточки

  • Перейдите в любую заметку (например, в буфер с файлом Org-roam или просто в .org файл).
  • Выполните команду из любого места в файле.
  • M-x org-workbench-add-file или C-c w f.
  • Весь файл добавляется в виде одной карточки.
  • Карточки с файлами помечаются [FILE] префиксом на рабочем столе.

5.5 Работа с карточками на рабочем столе

  • В буфере рабочего стола доступны основные операции:

    • Перемещение карточки вверх/вниз: M-↑ и M-↓ (или M-p / M-n).
    • Удаление карточки: C-c C-k.
    • Переход к источнику (если настроена система ID): нажмите RET на карточке — откроется исходный файл с этим заголовком.
    • Синхронизация изменений (если настроена система ID): после редактирования исходной заметки можно обновить карточку в рабочем столе командой C-c s c (или M-x org-workbench-sync-card).
      • Это скопирует новый текст из источника в карточку.
    • Обновление всех карточек рабочего стола из источников: M-x org-workbench-sync-all.
  • Карточки можно свободно переставлять, группировать, удалять ненужные — структура исходных файлов остаётся нетронутой.

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

  • Когда карточки расставлены в нужном порядке, вы можете:
    • Экспортировать карточки как список ссылок
      • команда M-x org-workbench-export-links создаст в новом буфере список Org-ссылок на каждую карточку;
      • эти ссылки можно вставить в другой документ, чтобы использовать как план или оглавление.
    • Просто копировать текст из карточек в новый файл, комбинируя фрагменты.
    • Продолжать редактировать прямо в рабочем столе
      • карточки — это обычный Org-текст, вы можете дописывать свои мысли, заметки, комментарии между карточками;
      • рабочий стол — это полноценный Org-буфер, только с дополнительными командами для управления карточками.

5.7 Управление несколькими рабочими столами

  • Для каждого проекта или темы можно создать отдельный рабочий стол.
  • Переключаться между ними удобно через M-x org-workbench-manage.
  • Все они сохраняются в специальном файле (по умолчанию ~/.emacs.d/org-workbench-data.el) и восстанавливаются при следующем запуске Emacs.

5.8 Завершение работы и перенос результатов

  • Когда структура готова, вы можете либо оставить рабочий стол как черновик, либо перенести финальный текст в основной документ.
  • Рабочий стол можно в любой момент переименовать или удалить, если он больше не нужен.

5.9 Пример сценария: написание статьи

  • Вы изучаете тему и собираете заметки в Org-roam.
  • Для статьи «Влияние ИИ на образование» создаёте новый рабочий стол AI-education.
  • Находите в своей базе заметки: «История ИИ», «Применение в школах», «Этические проблемы», «Исследования 2023». Для каждой выполняете org-workbench-add-subtree.
  • В рабочем столе перетаскиваете карточки в логическом порядке: сначала история, потом современные применения, потом этика.
  • Между карточками дописываете связующие абзацы.
  • В итоге получается черновик статьи, который можно экспортировать в HTML или LaTeX.

6 Сравнение org-workbench и zetteldesk

  • Представьте, что вы работаете над сложной статьей. У вас есть много заметок, разбросанных по разным файлам.
  • org-workbench предлагает вам взять эти заметки и выложить их на большой чистый стол.
    • Вы можете свободно перемещать их, менять порядок, группировать, не боясь испортить оригиналы.
    • Это временное, гибкое пространство для сборки идей.
  • zetteldesk действует как «обзорная доска», которая прикрепляется к вашему текущему файлу или заметке.
    • Его задача — показать вам все связанные с ней заметки (например, по ссылкам или обратным ссылкам) в удобном, временном боковом окне.
    • Это пространство для навигации и обзора контекста.
Критерийorg-workbenchzetteldesk
Основная метафораРабочий стол, картотека. Собираете карточки в новом буфере.Временный обзорный буфер, доска. Показывает все заметки, связанные с текущей.
Цель использованияСинтез и написание. Помогает собрать разрозненные идеи в единую структуру.Навигация и контекст. Помогает увидеть связи между заметками.
Связь с источникомОтображаемые заметки — дубликаты оригиналов.Карточки в рабочем столе — это копии исходных заметок.
Работа с иерархиейУплощает иерархию, помещая все карточки на один уровень.Сохраняет иерархическую структуру связанных заметок.
Вариант использованияСобрать все мысли на один рабочий стол и расставить их в нужном порядке.Работа над концепцией: глядя на заметку, видеть все связанное.
  • Выбирайте org-workbench , если:

    • Ваша задача — писать новые тексты, собирать их из кусочков старых заметок.
    • Вам нужно безопасное пространство для экспериментов с порядком и структурой идей.
    • Вы хотите иметь постоянный «проектный» буфер, к которому можно возвращаться и дорабатывать структуру днями или неделями.
  • Выбирайте zetteldesk, если:

    • Ваша задача — исследовать связи между заметками.
    • Вам нужен быстрый обзор контекста текущей темы.
    • Вы активно перемещаетесь по своей базе знаний по ссылкам и хотите всегда видеть «соседние» заметки.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.