TheThe0.10.1
The/Большие файлы

Гигабайтный файл — это не «подождите».

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

механика

Три решения, из которых складывается скорость.

mmap

Оригинал отображается, а не копируется

Файлы от 100 МБ открываются через memory-mapping: страницы подгружаются по мере обращения, поэтому открытие почти не расходует RAM и не требует полного чтения с диска.

index

Индексация строк идёт в фоне

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

piece table

Правка в любом месте одинаково дешёвая

Буфер собирается из кусков, а не переписывается: вставка в начало файла на сотни МБ стоит столько же, сколько вставка в конец. Отмены — на снимках.

режимы

Редактор говорит, что отключил, вместо того чтобы тормозить.

Режим выбирается по размеру файла и виден в строке состояния. Это ключевое отличие от «внезапных тормозов»: поведение предсказуемо, а ограничения названы вслух.

режим 01

Normal

Обычные файлы, читаются в память целиком. Доступно всё — свёртка кода, брейкпоинты, конвертация переводов строк, подсветка с первого байта.

порог
< 4 MiB
открытие
полное чтение в память
подсветка
весь файл
найти всё
100 000 совпадений
отключено
ничего

режим 02

LargeText

Большие логи и дампы. Открывается через memory-mapping, индексация строк идёт в фоне; до 64 MiB файл после её завершения переезжает в собственный буфер и отпускает отображение. Мягкий перенос строк сохраняется.

порог
4 MiB — 1 GiB
открытие
mmap + фоновая индексация строк
мягкий перенос
включён
подсветка
256 KiB вокруг вьюпорта
найти всё
10 000 совпадений
полный проход
Enter/F3, 8 MiB на нажатие
отключено
свёртка кода, брейкпоинты, конвертация переводов строк, многострочный regex, индексация символов, VCS-маркеры, inline-дифф

режим 03

HugeSlice

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

порог
≥ 1 GiB
открытие
mmap на всё время работы
мягкий перенос
выключен
подсветка
64 KiB вокруг вьюпорта
найти всё
1 000 совпадений
отключено
всё, что отключает LargeText, плюс фоновый пересчёт перенесённых строк

данные

Лог на миллион строк удобнее читать таблицей.

Табличный режим CSV и TSV

  • Колонки подсвечены «радугой» — глаз не теряет столбец при прокрутке.
  • Шапка закреплена, номера строк крупные.
  • Работает на многомиллионных таблицах: те же mmap и фоновый индекс.
  • Поиск по проекту на RE2 — результаты сгруппированы по файлам.
Все форматы

и ещё одно

Большой файл особенно легко испортить.

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