ВозможностиЦеныДокументацияБлог
Получить mote
← Блог
Дизайн·23 июня 2026 г.·4 мин чтения

Даже при смене режима документ остаётся единым

Когда вы открываете предпросмотр, окно делится надвое, а при смене режима возникает ощущение, будто документ открывается заново? В mote режимы Live, Source и Reading — это три взгляда на один и тот же буфер, поэтому при переключении нет ни преобразования, ни сохранения, ни повторного синтаксического анализа.

m
mote
Один и тот же документ, показанный рядом в режимах Live, Source и Reading. Слева символы скрыты, в центре файл показан как есть, а справа — результат рендеринга без символов.
Один и тот же документ, показанный рядом в режимах Live, Source и Reading. Слева символы скрыты, в центре файл показан как есть, а справа — результат рендеринга без символов.

Редакторы Markdown обычно делят экран надвое. Слева вы пишете, а справа смотрите на результат. Поскольку один и тот же документ отрисовывается дважды, приходится постоянно синхронизировать прокрутку и положение выделения.

mote устроен иначе. Документ остаётся один, меняется только способ его отображения.

Один документ, три представления

В mote есть три режима.

  • Live: скрывает символы и сразу показывает форматирование.
  • Source: показывает содержимое в точности так, как оно сохранено в файле.
  • Reading: показывает результат, из которого полностью удалены символы Markdown.

Ядро читает документ и создаёт список декораций. Их всего три вида: к какому фрагменту применить стиль, какой фрагмент скрыть и какой фрагмент заменить виджетом.

Три режима — это результат применения разных фильтров к этому списку. При смене режима документ не открывается и не анализируется заново. Дерево блоков и результаты обработки встроенных элементов остаются прежними, меняется только фильтр.

Именно так это записано и в бюджете производительности. Переключение режима должно завершаться в пределах одного кадра и анимации перехода. Если происходит повторный синтаксический анализ, это считается нарушением. Стоимость переключения не зависит от размера документа, поэтому даже большие документы переключаются с той же скоростью.

Положение каретки и область выделения тоже сохраняются. Символ, на котором вы остановились в режиме Source, находится на том же месте и в режиме Live, а предложение, выделенное в режиме Live, остаётся выделенным и в режиме Source.

Вы не переходите к другой копии документа, а смотрите на тот же документ с другой точки зрения.

Пишите, проверяйте и читайте

Для написания текста удобен режим Live. На экране остаётся только содержимое, а символы Markdown появляются, когда к ним приближается каретка. Таблицы, формулы и изображения отрисовываются на своих местах в виде виджетов. Можно видеть сетку и редактировать содержимое ячеек.

Когда нужно точно проверить и сами символы, используйте режим Source. В нём удобно проверять, не сместились ли вертикальные черты в таблице, закрыт ли блок кода и нет ли пробелов в конце строки.

Режим Reading предназначен для просмотра итогового результата. Он не просто скрывает символы, а полностью убирает их с экрана. Печать и PDF также создаются на основе этого представления. Редактировать в нём нельзя, но можно выделять и копировать текст, а также открывать ссылки.

Примечания к выпуску, открытые в режиме Reading. Встроенные и блочные формулы отображаются на своих местах без символов Markdown.
Примечания к выпуску, открытые в режиме Reading. Встроенные и блочные формулы отображаются на своих местах без символов Markdown.

Создать режим Reading оказалось непросто. После удаления символов позиции на экране перестали совпадать с позициями в файле. Результаты поиска смещались в сторону, а место щелчка не совпадало с положением каретки.

Теперь ядро также записывает позиции и длину удалённых символов. Благодаря этому место щелчка на экране можно точно сопоставить с соответствующей позицией в файле.

Переключайтесь прямо с того места, где читали

Нажмите нужный режим в заголовке окна или используйте Ctrl+Shift+1, 2, 3.

При переключении первая строка на экране и положение каретки сохраняются. Перекрёстное затухание — это конечная анимация длительностью 160 мс, поэтому после её завершения не остаётся запланированных задач. Режим, в котором будут открываться новые окна, можно выбрать на вкладке редактирования в настройках.

С сочетаниями клавиш возникла небольшая путаница. Некоторое время в справке было написано, что Ctrl+1/2/3 переключает режимы, хотя на самом деле эти сочетания создавали заголовки. Окно первым перехватывало нажатия клавиш, поэтому код переключения режимов не выполнялся.

Теперь роли чётко разделены. Ctrl+Shift+1/2/3 переключает режимы, а сочетания от Ctrl+1 до Ctrl+6 создают заголовки. Палитра команд, список сочетаний клавиш и документация на сайте также приведены в соответствие.

Режим фокусировки слегка накладывается поверх экрана

Нажмите F8, чтобы чётко видеть только блок, в котором находится каретка. У остальных строк лишь снижается альфа-канал чернил до 32%.

Меняется только цвет, а положение символов остаётся прежним. Размытия и анимации тоже нет, поэтому при переходе между абзацами не нужно заново рассчитывать весь экран.

Режим фокусировки — не четвёртый режим. Это опция, которая накладывается поверх представления Live, поэтому её можно оставить включённой и перейти в другой режим.

Представление Live с включённым режимом фокусировки. Только список с кареткой отображается чётко, а остальное остаётся на своих местах и выглядит более бледным.
Представление Live с включённым режимом фокусировки. Только список с кареткой отображается чётко, а остальное остаётся на своих местах и выглядит более бледным.

Почему экран не делится надвое

В mote нет разделённого предпросмотра.

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

История отмены одна, выделение одно и прокрутка тоже одна.

Три режима существуют не потому, что документов три. А потому, что один и тот же документ приходится видеть в трёх разных ситуациях.

← РанееПричиной тяжеловесности был не Markdown, а веб-движокПозже →Почему мы построили приложение на едином ядре Rust с отдельными оболочками для каждой платформы
Следите за новостями через RSS.
Оставьте только текст
Русский
© 2026 mote