Temlibro в Obsidian, версия 1
Работа с Temlibro не должна быть жестко привязана к одному приложению. Все может резко измениться: разработчик забросит свое приложение, или приложение внезапно станет недоступно по какой-то другой причине, или вам потребуется работать в окружении, которое не будет поддерживать приложение, в котором вы ведете заметки... Скажем, у меня есть старенький 32-разрядный ноут, на котором установлен Линукс. Иногда удобней и безопасней брать такой комп, например, в поездки. И там нет и не будет Obsidian, только Vim или Emacs. С другой стороны, на Макбуке и на смартфоне хочется работать и с картинками, читать и конспектировать PDF, и использовать продвинутые возможности по оформлению текста. Так что я решил, что Temlibro должна работать в Vim и Obsidian, поэтому пытаюсь сделать возможной работу с ней в этих двух приложениях.
Для Vim я потихоньку ваяю плагин. Лучше бы, конечно, и для Obsidian написать полноценный плагин — и удобней, и быстрей. Но я пока не готов этому. Поэтому делаем «из подручных средств» — работа с Temlibro в Obsidian строится на использовании шаблонов плагина Templater и дополнительной синтаксической подсветки, реализуемой с помощью плагинов List Callouts и Dynamic Highlights. Да, в таком виде Temlibro работает небыстро, но у меня шаблоны пока справляются, и я готов терпеть некоторые тормоза некоторое время. :)
Чтобы настроить среду для ведения заметок Temlibro в Obsidian сперва нужно организовать структуру хранилища — требуется создать отдельные каталоги для ежедневных файлов, файлов тем, вложений и шаблонов:
assets
— все вложения (картинки, PDF и т.п.) должны быть здесь;journals
— ежедневник (daily notes)collections
— файлы больших тем, вынесенных отдельноtemplates
— шаблоны для плагина Templater
На самом деле вы можете папки назвать, как вам удобно (у меня, например, они на эсперанто: tagoj, temoj, resursoj). Важно, чтобы файлы ежедневников были отдельно от остальных, тяжелые картинки и т.п. тоже отдельно, ну и Templater требует папку для своих шаблонов.
Плагины — без них в Обсидиане вообще никак. :) Поэтому включаем встроенный Daily notes и устанавливаем плагины Templater, List Callouts и Dynamic Highlights.
Настраиваем Daily notes, чтобы ежедневные заметки создавались в каталоге journals
— нужно указать эту папку в настройках плагина в New file location. Там же нужно указать шаблон для файла ежедневника — в файле, создаваемом по этому шаблону, первой строкой должен идти §-заголовок с датой — формат даты можете задать самостоятельно:
# § Дата
О шаблоне Daily notes ниже напишу подробнее.
В настройках самого Обсидиана (Files and links) указываем, что новые заметки нужно создавать в папке collections
, а вложения нужно хранить в отдельной папке assets.
Теперь настроим пару плагинов так, чтобы §-ссылки красиво подсвечивались в тексте.
В настройках List Callouts добавляем собственный стиль списка: символ «§» и цвет выделения (по желанию, но я рекомендую задать тот же цвет, что используется как Accent color в разделе Appearance — он используется в том числе для выделения ссылок, а этот стиль списка и есть вариант ссылки в Temlibro).
Идем в настройки Dynamic Highlights и последовательно создаем два правила.
- Название:
Superlink
- Выражение для поиска:
§\[[^\]]+\]
- Цвет (нужно кликнуть на кружке между названием и выражением):
#00000000
(цвета мы задаем в CSS) - Custom CSS:
.Superlink { font-weight: bold !important; color: var(--text-faint) !important; }
- Название:
Superlink-Inner
- Выражение для поиска:
(?<=§\[)([^\]]+)
- Цвет:
#00000000
- Custom CSS:
.Superlink-Inner { --font-weight: var(--link-weight); color: var(--link-color) !important; font-weight: var(--link-weight) !important; }
Ну, а теперь функциональность. Это плагин Templater.
Скачиваем шаблоны из GitHub Gists (справа есть кнопочка Download ZIP) и кладем все файлы в папку templates
хранилища.
OpenParalink — переход по §-ссылке. Логика шаблона следующая: если существует только один заголовок в системе, равный тексту ссылки, то Обсидиан откроет файл с ним, если же таких заголовков несколько — будет открыта панель поиска по этому тексту в заголовках.
MoveTheme — перенос темы в отдельный файл. Если тема разрослась, и вы хотите собрать всю информацию по этой теме в одном месте, вы можете воспользоваться этим шаблоном. При его выполнении переносится текущая тема, в которой расположен курсор, от заголовка темы до следующего заголовка того же уровня, горизонтальной черты (---
) или конца файла. Перенесенный текст будет заменен §-ссылкой на тему, а в конец перенесенного текста в файле темы будет добавлена §-ссылка исходный журнал.
MakeIndex — генерация файла index.md
. Файл индекса распологается в корневой папке хранилища и содержит два раздела: список всех тем и список всех журналов. В начале скрипта шаблона есть три параметра, с помощью которых вы можете настроить заголовок самого файла (TitleHdr
), название раздела с темами (ThemesHdr
) и название раздела журналов (JournalHdr
).
AutocompleteThemes — автодополнение в §-ссылках и заголовках. Может быть полезным для быстрого и безошибочного выбора уже существующей темы в заголовке или §-ссылке. §-ссылка на несуществующую тему в Temlibro смысла не имеет.
InsertParaLink — вставка §-ссылок с автодополнением. Позволяет выбрать существующую тему и вставляет в текст §-ссылку в формате §[тема]
. Чтобы иметь возможность вставлять §-ссылки в формате списков, скопируйте этот шаблон под другим именем, и замените в конце его текста editor.replaceSelection("§[" + selected + "]");
на editor.replaceSelection("- § " + selected);
.
DailyNote — шаблон для ежедневных заметок (должен содержать заголовок вида # § Дата
, дата в этом шаблоне задается в формате ДН ДД МЕС ГГГГ
, где ДН — день недели, ДД — день, МЕС — месяц, ГГГГ — год). Можете формат даты поменять на такой, какой вам нужен. Если хотите дату по-русски, как у меня, можете взять этот скрипт, положить его в Script files folder location плагина Templater (может быть тот же templates
), и поменять заголовок в шаблоне на такой:
# § <% tp.user.fmtDates(tp, "ddd DD MMM YYYY", true) %>
Если вы хотите перенастроить или как-то доработать шаблоны, вот ссылка на документацию плагина Templater.
Шаблон DailyNotes нужно указать в настройках плагина Daily notes, остальные шаблоны добавляем в Templater — идем в настройки плагина Templater и добавляем их в разделе Template hotkeys. Затем открываем раздел настроек Hotkeys самого Обсидиана, и связываем удобные вам горячие клавиши с соответствующими вызовами шаблонов (только нужно выбирать вариант с Insert template, а не Create template).
Если все сделано правильно, у вас появятся клавиши для:
- перехода по §-ссылке;
- автодополнения §-ссылки или названия темы;
- вставки §-ссылки;
- обновления файла индекса;
- переноса записи о теме в файл темы.
Для большего удобства использования можно еще установить плагин Hompage и сказать ему использовать файл index.md в качестве домашней страницы. Тогда по нажатию на кнопку с домиком будет открываться индекс. Дополнительно можно указать в настройках Homepage в секции Commands команду Templater: Insert templates/MakeIndex.md
, тогда файл индекса будет автоматически обновляться при каждом открытии.