27 апреля 2010 г.

Zim: Вики-заметки на вашем компьютере

Довольно давно я пользуюсь апплетом xfce4 для заметок. Когда я решил поплотнее осваивать Bash, а так же решил познакомиться с Python, возникла необходимость в средстве организации конспекта, чтобы всё было под рукой. Ни xfce4-апплет, ни другие реализации «липких записок» вроде tomboy или knotes, для этого не годились: начиная с определённого критического количества записок, ориентироваться в них становилось невозможно. В итоге я попробовал Zim. Результатами своего знакомства с ним я и хочу с вами поделиться. Рассказывать буду о версии 0.46, самой свежей на момент публикации.

Zim, настольная вики

Согласно Википедии, вики — (англ. wiki) веб-сайт, структуру и содержимое которого пользователи могут сообща изменять с помощью инструментов, предоставляемых самим сайтом. Характерными особенностями вики-сайтов всегда были простота структурирования и встроенная простая разметка.

Эти две особенности разработчики Zim решили воплотить в этом удобном и простом инструменте для структурирования и хранения заметок. По сути Zim является WYSIWYG-редактором с базовым функционалом форматирования текста (списки, стили шрифта, вставка картинок и диаграмм) и поддержкой внутренних ссылок между заметками. При этом заметки он хранит в виде отдельных, чётко структурированных по каталогам текстовых файлов с вики-форматированием.

Но этим функционал программки не ограничивается: есть поддержка календаря, списков дел (т.н. ToDo-lists), проверка орфографии и даже экспорт в HTML.

Окно программы

Но, обо всём по порядку: давайте посмотрим на главное окно. (Для наглядности я покажу встроенную справку, оформленную в самом Zim, с примерами и наполнением, куда превышающим мои скромные записки.)

На главной панели имеются кнопки перехода между страницами и кнопка для перехода на домашнюю. Кроме того, режим «только чтение» включается здесь же. Далее следуют кнопки форматирования: жирный, курсив, подчёркнутый, зачёркнутый, кнопки добавления ссылки и картинки, а так же дополнительные кнопки, включающие расширения (в моём случае — проверку орфографии и список дел).

Всё остальное место занимают древовидная структура наших вики-заметок и само поле, куда вводятся и где отображаются наши заметки (над последним — отключаемая история переходов в виде кнопок с названиями страниц).

Форматирование

Новые заметки создаются из контекстных меню по правой клавише мыши, либо из ссылок, которые мы можем создавать в любом месте нашей настольной вики благодаря ключевым символам:

  • :link создаст страницу в корне;
  • :link1:link2 создаст страницу link1 с дочерней страницей link2 и будет вести на link2 (абсолютная ссылка);
  • +link создаст дочернюю страницу текущей.

Причём ссылка возникнет сразу же после ввода пробела или переноса строки после ввода самой ссылки, и переход по ней возможен как с помощью мыши, так и с помощью клавиатуры (просто навести курсор и нажать Enter).

К сожалению, создание внутренних ссылок «на лету» работает только с латиницей. Ссылки, содержащие кириллицу, в ссылки автоматически не превращаются (впрочем, через меню или кнопку ссылки с кириллическими именами вполне создаются).

Кроме того, вполне работают ссылки на файлы локальной машины, http-ссылки и даже быстрые ссылки на ресурсы, заданные в специальном файле настроек:

  • нажатие на /path/to/file.ext будет автоматически открывать файл file.ext, находящийся в каталоге /path/to в приложении по умолчанию для оконной среды;
  • ссылка http://ya.ru/ откроет браузер на странице поисковика Яндекса;
  • а wp?wiki откроет страницу Википедии, рассказывающую про wiki, в умолчательном браузере оконной среды.

Заголовки создаются с помощью знаков =, при чём от количества знаков зависит уровень заголовка:
==Заголовок 1 уровня
=======Заголовок 7 уровня

Ненумерованные списки создавать тоже просто: достаточно начать строку с знака * и пробела, чтобы начать новый список, при чём имеется поддержка многоуровневых списков по клавише Tab (правда, символы для разных уровней остаются одинаковыми: разница только в отступах). Поддержка нумерованных списков отсутствует, но, по словам разработчиков, планируется.

Для стилей текста подобных способов ввода нет, однако работают уже привычные многим хоткеи Ctrl+B, Ctrl+I, Ctrl+U. Для заголовков также можно использовать Ctrl+1-Ctrl+5, а Ctrl+0 сбрасывает форматирование выделенного фрагмента текста.

Дела

Zim обладает встроенной поддержкой списков TODO, которые можно создавать на любой странице вашей настольной вики: достаточно ввести [], чтобы получить чекбокс, рядом с которым можно указать задачу, а с помощью кода [d: 1/5] назначить дату (в данном случае 1 мая), и, возможно, приоритет задачи (! через пробел после текста, при чём, чем больше восклицательных знаков, тем выше приоритет).

Прилагающийся плагин Task List позволит вам просматривать список задач по всей вики, при чём нажатие на пункт в списке будет открывать в окне Zim страницу с задачей.

Плагины

В комплекте с Zim идут плагины для вставки скриншотов (требуется scrot), уравнений (latex+dvipng), диаграмм (graphviz), значок в трей, проверка орфографии (python-gtkspell и словарь aspell для соответствующего языка), уже упомянутый мною Task List, Link Map (graphviz, но у меня почему-то не работает), календарь, который позволяет мгновенно создавать страницу с адресом, соответствующим дате (например, :Calendar:2010:04:27), печать из браузера (в Zim не встроена функция печати, но документы можно экспортировать в браузер и печатать оттуда) и контроль версий (требует bzr).

Веб

Кроме уже перечисленных возможностей, стоит отметить и тот факт, что настольная вики Zim имеет возможности работы с вики-сайтами. Речь идёт не только о возможности экспорта всего дерева документов как веб-страниц (по заданному шаблону), но и о том, что структура заметок Zim являет собой комплект текстовых файлов, расположенных структурировано в заданном каталоге, при чём разметка внутри текстовых документов соответствует вики-стандартам. Я, к сожалению, не силён в принципах работы различных веб-сервисов, но мне кажется, что если все эти текстовые документы подключить к вики-движку, то в итоге можно получить сайт, содержимым которого можно будет управлять прямо из Zim.

Применение

Внимательный читатель уже, скорее всего, решил, что Zim ему пригодится и даже определился с тем, для чего. Я же предположу несколько областей, где Zim будет чрезвычайно полезен и незаменим:

  • ведение конспектов: легко структурировать данные, легко искать информацию, легко делать ссылки на ходу;
  • написание документации: древовидная структура записок для этих целей идеальна, а возможность вставки скриншотов тоже придётся кстати;
  • блоговодство: когда ведёшь блог, рано или поздно понимаешь, что идеи редко возникают «вовремя», когда есть возможность заняться статьёй, а когда эта возможность появляется, идеи забываются.

Надёжность, установка и зависимости

Стабильность работы Zim довольно высока, хоть и не идеальна. Ошибки время от времени случаются при удалении заметок. К скорости работы у меня претензий не возникло.

Zim есть в репозитариях Ubuntu и ArchLinux, так что с установкой проблем возникнуть не должно:
# aptitude install zim
# pacman -S zim
В зависимостях главным образом python и GTK, плюс необязательные зависимости плагинов.

При запуске Zim предлагает создать каталог для заметок, который впоследствии будет использоваться по умолчанию. В качестве примера можете положить в этот каталог данную статью (работал над ней я как раз в Zim). Для этого нужно скачать архив и распаковать его в корень каталога с записками.

Приятной работы с заметками!