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

Чтобы сохранялись только введённые мной байты, мы сделали файл источником истины

Случалось ли вам видеть в git diff таблицу, которую вы не изменяли? mote считает источником истины не модель документа, а файл и при сохранении записывает на диск только те байты, которые вы ввели.

m
mote
Строка состояния сразу после вставки одного предложения и сохранения. На диске фактически изменилось всего 17 байт.
Строка состояния сразу после вставки одного предложения и сохранения. На диске фактически изменилось всего 17 байт.

Иногда достаточно исправить одно слово в таблице Markdown, а в Git всё выглядит так, будто изменился весь документ.

Это происходит потому, что при сохранении редактор заново упорядочивает интервалы и переносы строк в таблице. То есть он записывает в файл даже пробелы, которые пользователь не вводил. Например, Typora заполняет пробелами промежутки между вертикальными чертами, чтобы выровнять ширину столбцов таблицы.

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

Объём изменений можно проверить до сохранения

mote показывает в строке состояния количество байтов, которые изменятся при сохранении.

Он сравнивает исходный файл на момент его открытия с текущим содержимым и подсчитывает только фактически изменившиеся части. После редактирования отображается 17 B 저장 대기 중, а если отменить все изменения, надпись меняется на 저장된 파일과 같음. После сохранения надпись 저장 완료 · 17 B остаётся до следующего редактирования.

Экран после отмены редактирования — в строке состояния вместо количества байтов, которые изменятся, отображается "저장된 파일과 같음".
Экран после отмены редактирования — в строке состояния вместо количества байтов, которые изменятся, отображается "저장된 파일과 같음".

Это число отображается независимо от Git. Его можно увидеть и в папке, которая не является репозиторием Git, а состояние индексирования или коммита на него не влияет.

При этом оно соответствует объёму изменений, который появится в Git diff. Ещё до сохранения можно проверить, изменится ли только то, что исправили вы.

Если исправить одну ячейку таблицы, изменится только эта ячейка

Лучше всего разница заметна при редактировании таблиц.

В режиме Live таблица отображается в виде сетки. В исходный текст превращается только ячейка, в которой находится курсор. Если исправить в ней одно слово и сохранить файл, в строке состояния появится +8 −6 B. В Git diff также отобразится только соответствующая строка.

Строка состояния и git diff после изменения слова в одной ячейке таблицы в режиме Live и сохранения. В выравнивании таблицы и остальных строках не изменилось ни одного байта.
Строка состояния и git diff после изменения слова в одной ячейке таблицы в режиме Live и сохранения. В выравнивании таблицы и остальных строках не изменилось ни одного байта.

Выравнивание столбцов и пробелы между вертикальными чертами остаются без изменений. Маркеры списка * и два пробела в конце строки также не затрагиваются. Если в исходном файле не было завершающего переноса строки, новый перенос не добавляется.

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

Сохраняются и другие особенности файла. CRLF остаётся CRLF, а файлы со смешанными LF и CRLF сохраняются в том же виде. BOM и завершающий перенос строки также соответствуют оригиналу. В каждом выпуске это поведение проверяется тестами сохранения с повторным открытием файла.

Изменение файла начинается только с действия пользователя

Есть три случая, когда mote добавляет байты в документ.

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

Все эти изменения напрямую инициируются пользователем. Что именно изменилось, можно проверить в истории изменений.

mote также не создаёт отдельные файлы рядом с документом. Информация, которую невозможно сохранить в Markdown, например ширина столбцов таблицы, отдельно не записывается — соответствующая функция просто не предоставляется.

Сведения приложения, такие как настройки, недавние файлы и 20 резервных копий, хранятся только в папке состояния в домашнем каталоге пользователя. Благодаря этому папка с документами ведёт себя в Git, Dropbox или Syncthing так, словно mote вообще отсутствует.

Но зато mote не исправляет файл автоматически

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

Повреждённые таблицы, незакрытые ограждения блоков кода и неверные отступы списков отображаются именно так, как их интерпретирует CommonMark. Если результат выглядит не так, как вы хотите, исправить его нужно вручную в режиме Source.

Редактор, в котором при сохранении неизвестно, что именно изменится, берёт файл взаймы. mote возвращает переданный мной файл в неизменном виде.

← РанееПочему вместо слов «лёгкий» мы публикуем цифрыПозже →Как мы сделали так, чтобы файл не повредился, даже если приложение выключится во время сохранения
Следите за новостями через RSS.
Оставьте только текст
Русский
© 2026 mote