Признаюсь, я не просто люблю KeyNote NF, я не могу жить без этого редактора. И сейчас объясню почему.
Я работаю с текстом каждый день по много часов. Чтобы быстрее решать языковые задачи, я двадцать лет назад начал создавать программную языковую среду, или, попросту говоря, персональный словарь. Каждому слову в этом словаре отведена отдельная статья, которая содержит синонимы, антонимы, ассоциации, этимологию, примеры употребления, ссылки на статьи других словарей и тому подобное. В качестве навигатора по словарным статьям я использовал программу «Treepad Business Edition», а для автоматизации словарных операций я использовал «Macro Scheduler».
За двадцать лет файл моего словаря вырос примерно до 680 MB, и однажды Treepad отказался его открывать, сказал, что у него недостаточно памяти (хотя свободной памяти в ту минуту было больше 7GB). Мне пришлось загрузить словарь в Notepad++ и оптимизировать его при помощи регулярных выражений. Таким образом я уменьшил размер файла и Treepad его открыл. Но вместе с тем я понял: если мой словарь будет расти и дальше, то рано или поздно наступит минута, когда никакая оптимизация мне уже не поможет и словарь не откроется. И тогда я решил поменять навигатор статей. (Treepad, кстати, не работает с кодировкой UTF8 — и это стало ещё одной причиной, чтобы сменить навигатор).
За последние полгода я перепробовал несколько десятков редакторов с древовидной структурой, вот их список в алфавитном порядке: AllMyNotes, Aml Pages, Cherrytree, EssentialPIM Pro, Evernote, Flashnote, GoldenSection Organizer, Indigrid, InfoAngel, Joplin, Keepnote, Mars Notebook, MemoMaster, MemPad, MyInfo, My Notes Keeper, Mybase, Mytetra, NoteCase Pro, Obsidian, OutWiker, Personal Knowbase, RightNote, SeoNote, Smereka TreeProjects, TakeNote, The Guide, TiddlyDesktop, TreeDBNotes Pro, Treedbnotes, TreeLine, TreePad X Enterprise, Trilium Notes, Typora, Ultra Recall, WikidPad, WinOrganizer, Zim, Zotero.
Ни одна из этих программ в качестве навигатора статей не подошла, зато KeyNote NF прекрасно справился со всеми моими потребностями. Сейчас я опишу эти потребности, и тогда будет понятно, почему я считаю KeyNote самым лучшим древовидным редактором.
Поскольку в моём словаре больше 650 000 статей, у меня к древовидным редакторам особые требования. Перечислю их в порядке важности.
1. Некоторые редакторы обладают замечательным свойством: если текстовой курсор установить на любой узел в панели дерева, а затем ввести на клавиатуре какую-нибудь последовательность знаков, то курсор мгновенно перейдёт на тот узел, название которого начинается с этой последовательности.
Навигатор по словарным статьям должен обладать этим свойством, так как без этого свойства не работает сердце моей языковой среды: Поисковый скрипт. (Этот скрипт вначале был написан на языке Macro Scheduler, а позже — на языке AutoHotkey.) Благодаря скрипту я могу указать мышиным курсором любую фразу (в любом браузере или редакторе) и мгновенно перейти к словарной статье, заголовок которой начинается с этой фразы. Свой персональный словарь, кстати, я начал создавать лишь после того, как поработал с языками сценариев — без этих языков мой словарь никогда бы не появился.
2. Редактор должен полностью загружать файл моего словаря в оперативную память.
Как выяснилось, некоторые из перечисленных редакторов сохраняют ветки дерева в виде отдельных файлов. Иначе говоря, эти редакторы не загружают мою базу данных в RAM, вместо этого они работают с HDD или SSD. Для небольших баз данных такой метод хорош, но когда в базе сотни тысяч статей, редактору приходится работать с сотнями тысяч файлов, а это очень тормозит работу.
3. Файл базы данных должен иметь текстовой формат. Я имею в виду не только «plain text», но и любые другие форматы (rtf, html, xml…), то есть форматы, в которых используются языки разметки. Бинарный формат файла мне не подходит, и сейчас объясню почему.
Я постоянно улучшаю структуру словаря (добавляю в статьи, тематические маркеры, изменяю формат статей и тому подобное). Такую работу удобно проводить в обычном текстовом редакторе, который поддерживает regex. Недавно, например, я улучшил структуру словарных заголовков, а именно: я заменил все пробелы (код 32) неразрывными пробелами (код 160). При помощи Notepad++ и регулярных выражений я выполнил замену за считанные секунды, но если бы эту работы я проводил через оконный интерфейс древовидного редактора (при помощи макро-скрипов), то на эту операцию ушло бы несколько месяцев.
* * *
KeyNote NF, как я уже сказал, прекрасно справился со всеми моими требованиями. Мой Поисковый скрипт работает в KeyNote гораздо быстрее и точнее, чем в редакторе Treepad. KeyNote также порадовал своей скоростью загрузки и записи. Мой огромный словарь загружается за считанные секунды, а ещё быстрее он сохраняется на жёсткий диск (сравните: программа Treepad тратила на эти операции десятки минут). Вот так KeyNote NF спас мой словарь и мои методы работы.
Вывод такой: KeyNote идеально подходит для работы с большими базами данных. Подробный список функций редактора доступен в репозитории KeyNote NF на GitHub:
Существует 32-битная и 64-битная версия редактора. Эти версии часто обновляются. За три последних месяца вышло 7 обновлений. А это значит, что в проекте KeyNote NF есть живая душа, и я ей очень благодарен.