Emacs Org-mode — это не отдельное приложение, а режим внутри Emacs: обычные текстовые файлы с разметкой, которые одновременно служат списком задач, базой заметок, таблицей и исходником для экспорта. Их можно читать без Emacs, хранить в Git и обрабатывать через grep. Ниже — рабочий минимум: структура, повестка дня, быстрый захват мыслей и экспорт в HTML, PDF и Markdown.
Почему текстовые файлы
Org не запирает данные в базе и не требует подписки. Один файл может быть проектом, другой — дневником, третий — списком покупок. Связи задаются ссылками, а поиск работает обычными средствами системы.
- файлы остаются читаемыми в любом редакторе;
- история изменений ведётся через Git без экспорта;
- grep и ripgrep ищут по всем заметкам сразу;
- экспорт в HTML, PDF, Markdown и ODT встроен;
- нет зависимости от чужого сервера и формата.
Установка и первый файл
В Debian, Ubuntu и Linux Mint Org идёт в составе Emacs, отдельная установка не нужна. В 2026 году достаточно Emacs 29 или новее: Org 9.6+ уже включён. Создайте каталог и откройте первый файл.
sudo apt install emacs
mkdir -p ~/org
emacs ~/org/inbox.org
Настройки удобно держать в init.el. Переменная org-directory задаёт базу, а org-agenda-files может указывать на каталог целиком — Emacs сам найдёт в нём файлы .org.
;; ~/.emacs.d/init.el
(require 'org)
(setq org-directory "~/org"
org-default-notes-file (expand-file-name "inbox.org" org-directory)
org-agenda-files (list org-directory)
org-log-done 'time)
Заголовки, TODO и теги
Заголовки начинаются со звёздочек, а ключевые слова TODO задают состояние. Срок ставится свойством DEADLINE, теги — в конце строки. Всё это остаётся обычным текстом.
* Проект: сайт
** TODO Сверстать страницу контактов
DEADLINE: <2026-11-10 Tue>
:PROPERTIES:
:CATEGORY: site
:END:
** NEXT Собрать макет
** DONE Согласовать структуру
TAB сворачивает и раскрывает поддеревья, C-c C-t переключает состояние, C-c C-s и C-c C-d ставят дату и дедлайн, C-c C-q добавляет теги. Свои состояния задаются переменной org-todo-keywords: например, WAIT с меткой времени, когда задача отложена.
Повестка дня
Повестка собирает задачи и сроки из всех файлов. Нажмите C-c a a для недельного обзора или C-c a t для списка всех TODO. Свои представления добавляются в org-agenda-custom-commands.
(setq org-agenda-custom-commands
'(("d" "День" agenda "" ((org-agenda-span 'day)))
("w" "Неделя" agenda "" ((org-agenda-span 'week)))))
После этого C-c a d открывает день, а C-c a w — неделю. В повестку попадают только файлы из org-agenda-files; если список пуст, проверьте переменную и добавьте файл командой C-c [.
Быстрый захват мыслей
Мысль удобнее записать за пару секунд, чем искать нужный файл. Шаблоны захвата открываются по C-c c, затем по клавише шаблона. %? ставит курсор, %U — дату и время, %a — ссылку на место, откуда вы пришли.
(setq org-capture-templates
'(("t" "Задача" entry (file+headline "inbox.org" "Задачи")
"* TODO %?\n %U\n %a")
("n" "Заметка" entry (file+datetree "notes.org")
"* %?\n%U")))
Всё попадает в inbox.org, а не в случайные проекты. Раз в день inbox разбирается: задача получает проект и срок, заметка — тег, мусор удаляется. Это проще, чем поддерживать идеальную структуру заранее.
Таблицы и вычисления
Таблицы Org считают формулы прямо в файле. Формула $4=$2*$3 применяется к каждой строке, а C-c C-c пересчитывает значения. Горизонтальные линии отделяют шапку и итоги, C-c | создаёт таблицу из выделенного текста.
| Товар | Цена | Кол-во | Сумма |
|--------+------+--------+-------|
| Кабель | 300 | 2 | |
| Мышь | 1200 | 1 | |
#+TBLFM: $4=$2*$3
Готовую таблицу можно выгрузить в CSV командой M-x org-table-export и открыть в LibreOffice. Для больших расчётов оставьте данные в таблице, а вычисления вынесите в код через org-babel: блок #+begin_src bash выполняется по C-c C-c.
Экспорт
Экспорт вызывается через C-c C-e. HTML — h o, PDF — l p, Markdown — m o, ODT — o o. Для PDF нужен установленный LaTeX, иначе экспорт завершится ошибкой; для офисных документов достаточно ODT.
(require 'ox-html)
(require 'ox-md)
(setq org-html-validation-link nil)
Титул и параметры задаются в начале файла: #+TITLE, #+AUTHOR, #+OPTIONS: toc:nil. Пакетный экспорт удобен для сайта или регулярной отчётности.
emacs --batch --eval "(progn (require 'ox-html) \
(find-file \"~/org/plan.org\") (org-html-export-to-html))"
Обратная косая черта переносит строку в shell. Если команда не срабатывает, проверьте, что ox-html действительно загружен: без require функция экспорта может быть не определена.
Синхронизация и гигиена
Файлы дружат с Git: коммиты раз в день дают историю и резервную копию. Синхронизация через обычный remote не требует проприетарного клиента, а конфликты решаются как в любом текстовом проекте.
cd ~/org
git init
git add .
git commit -m "org: ежедневный снимок"
Не храните в репозитории пароли и токены: Org удобен для заметок, но не является хранилищем секретов. Для личных данных используйте отдельный закрытый репозиторий и шифрование.
Типичные ошибки
Большинство проблем решается проверкой трёх вещей: пути, режима и бэкенда экспорта. Пустая повестка почти всегда означает неверный org-agenda-files. Если не открывается меню экспорта, нужный модуль не загружен. Если PDF не собирается — нет LaTeX или в документе недопустимый символ.
- проверьте
M-x org-versionи путь к файлу черезC-x C-f; - добавьте файл в повестку командой
C-c [; - для PDF установите
texlive-latex-recommendedи посмотрите буфер*Messages*; - битые ссылки открываются по
C-c C-o, путь можно исправить вручную; - если повестка тормозит, архивируйте выполненные поддеревья через
C-c C-x a.
Итог
Org-mode даёт предсказуемый рабочий процесс без облака и подписок: задачи в TODO-деревьях, повестка из всех файлов, быстрый захват в inbox и экспорт одной комбинацией. Начните с одного файла и трёх состояний, затем добавьте таблицы и Git. Чем проще структура, тем выше шанс, что вы будете пользоваться ею каждый день.