войти зарегистрироваться

Emacs whois

индекс
76,06

Организация информации — Emacs Org Mode

Привет всем!
Долгое время я пытался найти решение проблемы организации различного рода информации:
  • Личных и рабочих проектов - трекер проектов, документация, разделение на этапы, структуризация, приоритеты, риски, состояние отдельных этапов.
  • Простых TODO-списков - ведение списков дел в условиях сильного распараллеливания деятельности. Причем, чтобы обязательно было быстро, удобно, функционально и всегда под рукой.
  • Личной библиотеки - упорядочение огромного количества e-книг по категориям (со вложенными) + легкий доступ к ним чтобы был. Здесь сначала пытался просто понятно выстроить структуру папок, но масштабы уже не те, чтобы можно было потом быстро найти нужную книгу.

Ниже, я описал (знакомые мне) средства, которые могут быть использованы для решения этих задач. Лично для себя выбрал Emacs Org Mode, так что именно его описанию уделена большая часть текста.

  • Microsoft Office Project - от этого варианта отказался сразу, слишком громоздкий и не подходит для всех описанных задач. IMHO, в нем нормально можно только планы проектов составлять, да и то не для себя, а на корпоработе, когда важно пользоваться стандартным средством.
  • ToDoList - великолепная вещь, после первого знакомства (натолкнулся случайно на CodeProject.Com) не прекращал пользоваться, периодически обновляясь. У программы богатые возможности организации, графический интерфейс и прекрасное юзабилити. Написано это дело на MFC, то есть родной средой для него является Windows. Текущая версия (5.5 + еще пара цифр) имеет просто все, что нужно, а также весьма стабильна (впрочем, у меня ToDoList еще с 4-х версий ни разу не падал). Есть импорт и экспорт из/в кучу форматов, включая MS Project. Есть возможность, называемая "Transform tasklist" - как пример, можно по шаблону сохранить список в html по выбранным фильтрам. Также возможно отфильтровать видимые задания по категориям, типам, выполнению, риску, ответственному и приоритету. Еще стоит упомянуть, что программа отлично масштабируется под ваши нужды - можно скрыть большинство полей и придать ей компактный вид, и я не знаю задач, которые потребовали бы больше фунциональности и атрибутов, чем имеется в этой программе. Таже она полностью portable, т.е. можно носить на флешке и freeware (исходные коды доступны на codeproject). В общем, рекомендую всем, кому вдруг не понравится о_О следующий вариант.
  • Emacs Org Mode - всем пользователям Emacs посвящается! Мое мнение - наличия Org Mode в Emacs достаточно, чтобы начать пользоваться им, особенно если вы приверженец простоты работы с простым (plain) текстом простыми клавиатурными комбинациями. Как только я ввел команду M-x org-mode я забыл про ToDoList (что не делает его плохой программой). В Emacs версий 22 (насчет более старых не уверен) присутствует, хоть и устаревшая (4.67c), но вполне работоспособная версия Org Mode. Краткое описание привожу ниже, а полный манул можно найти на OrgMode.Org, там же скачать свежую версию.


Emacs Org Mode


Если вкратце, то Org Mode - это plain-text версия ToDoList (если совсем строго, то верно обратное), это режим Emacs для содержания коротких заметок, TODO-списков, для планирования проектов, а также для организации любой информации, которую можно представить текстом и в виде дерева. Собственно, представление информации в виде дерева, ее упорядочивание, сортировка - основная задача Org Mode.

Org Mode реализован поверх outline-mode, что позволяет сворачивать деревья и их ветви. Вся информация представлена в Org Mode в виде деревьев, в которые организованы TODO-записи и обычные заголовки. Заголовок - обычная строка текста с предшествующими звезочками (*). Количество звездочек - уровень вложенности заголовка. Если перед текстом, но после звездочки написать TODO, это уже TODO-запись, и с ней можно делать на порядок больше вещей, чем с обычной.

Под заголовком может быть произвольный текст, другие заголовки, ссылки и таблицы. Кстати, ссылки и таблицы - это еще две отдельные истории! Ссылки позволяют в удобном виде [[url][title]] создавать ссылки на любые элементы файловой системы, веб-ресурсы, ссылки mailto и usenet, а также ссылки на Org-элементы текущего или любого другого файла. Очень удобный функционал. Лично я с помощью ссылок в Org Mode упорядочил свою e-библиотеку.

Таблицы - никогда не думал, что в текстовом режиме (все файлы Org Mode - простые текстовые файлы) можно реализовать такое количество функций для работы с таблицами: автоматическое расширение столбцов, обмен позиций у строк, столбцов, высчитываемые ячейки, формулы - не Excel конечно, но зато все это делается без отрыва пальцев от основного блока клавиатуры, это ведь Emacs!

Agenda Views. Для просмотра запланированных на сегодня / на текущую неделю дел, или же просто списка всех TODO, Org Mode содержит Agenda views - можно назвать это повесткой дня/недели. Можно настроить список файлов, из которых Agenda будет собирать информацию. Планирование задач - это фактически расставление заголовкам статусов и timestamp-ов.

Что еще.. Файлы Org Mode могут быть экспортированы в HTML, LaTeX, iCalendar и Freemind файлы, в нем есть поддержка планирования (различные timestamps, deadlines, повторяющиеся задания и т.д.), любым заголовкам можно присвоить произвольные статусы, теги и свойства, можно задавать произвольные линейки статусов (TODO - WAIT - DONE, DEVEL - TESTING - BUG - DONE, ...).

Внешний вид Org Mode - список e-книг "чтоб-были-под-рукой" (хотел вставить скриншот трекера проектов, но не нашел несекретной :) информации):

Emacs Org Mode

Примеры настройки Org Mode


Здесь фактически комментарии к части содержимого моего .emacs:

(custom-set-variables
Настройка переменных Org Mode - списка файлов для Agenda Views, директории по умолчанию для Org Mode и файла заметок по умолчанию:
'(org-agenda-files (quote ("p:/documents/org/fto.org")))
'(org-default-notes-file "p:/documents/notes")
'(org-directory "p:/documents/org")
)

Подключение Org Mode:
(require 'org-install)

Включение автоматического переключения в Org Mode при открытии файла с расширением .org:
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))

Несколько удобных shortcuts для сохранения ссылки на текущий заголовок и запуска org-agenda:
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)

Задание цепочек ключевых слов (переключение между словами клавишами Shift + Right или + Left с курсором на заголовке). "|" отмечает границу, если заголовок в статусе после этого разделителя, то он "выполнен", это влияет на планирование и отображение в Agenda Views:
(setq org-todo-keywords
'((sequence "TODO" "WAIT" "|" "DONE")
Здесь - анализ, первичная разработка, тестирование консультантом, доработка, польз. тестирование, отказ от разработки и перенос на боевое окружение :) :
(sequence "ANLZ" "FDEV" "CTST" "RDEV" "UTST" "|" "CNCL" "TRNS")
)

Задание произвольного начертания ключевым словам:
(setq org-todo-keyword-faces
'(("TODO" . (:foreground "red" :weight bold))
("WAIT" . (:foreground "orange" :weight bold))
("DONE" . (:foreground "green" :weight bold)))
)

Требуется для корректной работы Org Mode:
(global-font-lock-mode 1)

Об этом в следущем посте быть может :) :
(require 'mercurial)

А это тема с картинки :) :
(require 'color-theme)
(color-theme-initialize)
(color-theme-charcoal-black)

Теперь доступ к своему файлу вы сможете получить через M-x org-my
(defun org-my()
(interactive)
(find-file "p:/documents/org/default.org")
)

Замечу, что возможно некоторые настройки не будут работать в версии Org Mode по умолчанию, в любом случае стоит скачать свежую.

Спасибо за внимание, надеюсь, что кто-нибудь, как и я, найдет для себя в Org Mode кучу полезных возможностей. Вот кстати еще пара интересных линков: Using Emacs org-mode for GTD, Using org-mode as a Day Planner, на английском.

Если же вам все-таки хочется чего-нибудь попроще и с нормальным GUI, а также не хочется начинать пользоваться Emacs, что поначалу бывает болезненно - предлагаю как альтернативу ToDoList.
_________
Текст подготовлен в ХабраРедакторе

комментарии (17)

  • спасибо за статью было интересно читать

    ps а для vim'а вы ничего подобного не посоветуете ? =)
    • К сожалению, нет. Только что последовать примеру посмотреть профиль yzh44yzh (чуть ниже) (:
  • Да, ToDoList действительно удобная штука. На работе пользуюсь.
    Под линукс долго искал нечно подобное, но ничего не нашел.

    Жаль, что я не работаю c Emac, но вы навели меня на мысль получше поискать в плагинах для Vim. И простой запрос на google "todo list site://vim.org" сразу дал кучу вариантов. Как я сразу об этом не подумал? Теперь буду разбираться...
    • Как разберетесь, поделитесь опытом на хабре :)
  • Важно, что Org Mode позволяет работать с повесткой дня (agenda) и списком дел (TODO или определенные вами метки). Они могут создаваться на основе нескольких файлов. Все представления весьма гибко настраиваются. Для примера настройки и использования можно почитать статью http://www.newartisans.com/blog_files/org.mode.day.planner.php (англ.)
    • А я думал о чем я забыл написать - agenda, точно! Спасибо. За ссылку тоже, сам пользуюсь Org Mode вторую неделю, еще не освоил всех его возможностей.
  • Рекомендую отличный скринкаст на тему emacs org-mode
  • Хорошо, что кто-то наконец-то осветил org-mode на хабре, теперь осталось поднять карму, чтобы можно было запостить это дело в блог про emacs
    • Thx. Вернулся из отпуска, ща дополним и перенесем.
  • Сегодня в рассылке пробежала ещё одна хорошая вводная статья по org: http://pmade.com/articles/2008/project-p…

    Ещё полезно осилить произвольные свойства (см. «properties») как дополнение к тегам.
    • (только это, скорее всего, позднее 4.67 появилось (сейчас уже 6.0x))
    • Thx, в частности вычитал про column-view - чрезвычайно удобен.
  • И ещё я не понял смысл `org-my`.
    • Видимо Viverra удобно так ) хотя по-моему проще кнопку назначить на открытие файла со всякой всячиной...
      Сам использую набор org-файлов, так что подобная функция для меня не актуальна, хотя интересно :) просто открываю нужный файл и усе.
      Сейчас кстати пишу статейку про свое использование org-mode... у себя в блоге опубликую.
      • ага, удобно :) с кнопками есть проблема, я их плохо запоминаю, они безличны :)
        • Я забиндил на одну из дополнительных кнопок на клаве.
          • Ага, ну о вкусах...
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.