Когда редактор вредить не должен

28.09.2026 · 5 мин

Знаете, какой у меня критерий выбора редактора? Не подсветка синтаксиса, не плагины и не интеграция с Git. А то, сможет ли он вернуть мне текст, который я случайно удалил три месяца назад.

Что случилось с persistent undo

Дэвид Чиснелл — компьютерный учёный — написал в Mastodon историю, от которой у меня мурашки по коже. Пользуюсь Vim (текстовый редактор, популярный среди программистов с 1991 года) с 2000 года. Написал пять книг, диссертацию, пару десятков статей. Мои высшие мозговые функции давно не задействуются, когда я набираю базовые команды — они просто происходят. Но зато в документах, написанных в чём-то другом, случайно всплывает :w посреди текста.

Дальше он объясняет, почему это важно. Persistent undo — это функция, сохраняющая историю изменений файла между сессиями. Она редко нужна, но когда нужна — незаменима.

Блин, удалил что-то важное на прошлой неделе, до перезагрузки. Что это было? Отменяю изменения, пока не найду, копирую, вставляю.

Или чаще: работало, я привёл в порядок перед коммитом — и перестало работать. Что я сделал?

Vim сохраняет историю 20 лет, через обновления версий. Я даже не думаю об этом — это часть Первого закона Раскина: программа не должна вредить данным пользователя.

NEOVIM: ДАННЫЕ ПОЛЬЗОВАТЕЛЯ
═══════════════════════════
     ┌──────────┐
     │  undo    │     ← твоя история
     │ history   │         изменений
     └────┬─────┘
          │ detected
          ▼
  ┌──────────────┐
  │   DELETED    │     ← спасибо,
  │    (lol)     │         форк!
  └──────────────┘
Как NeoVim обращается с вашими данными

Почему это было проблемой

А теперь следите за руками. NeoVim — современный форк редактора Vim — при установке заметил старый файл undo и удалил его. Без предупреждения. Все данные — в мусорку.

Чиснелл открыл файл в обычном Vim — история исчезла. Открыл в NeoVim — история исчезла. Поднял issue — ответ разработчиков: формат persistent undo «нестабилен», пользователи не должны рассчитывать на сохранность данных в функции под названием… persistent undo.

Это не баг — это философия. NeoVim мог использовать другое имя для файлов undo. Мог мигрировать старый формат. Мог хотя бы предупредить. Вместо этого — удалили и сказали «ну, форк же».

КОМПЬЮТЕР И ДАННЫЕ ПОЛЬЗОВАТЕЛЯ
════════════════════════════════
┌──────────────────────┐
│  хранить историю     │
├──────────────────────┤
│  предупреждать       │
├──────────────────────┤
│  не ломать работу    │
└──────────────────────┘
Что должен делать человечный интерфейс

Почему это важно

Мне нравится этот пост, потому что он напоминает о трёх законах Джефа Раскина (создателя Macintosh и Canon Cat) из книги «The Humane Interface».

Компьютер не должен вредить вашей работе.

Компьютер не должен тратить ваше время.

Интерфейс человечен, если отвечает человеческим потребностям и учитывает человеческие слабости.

Книге — 25 лет. Законам — столько же. А мы до сих пор спорим, должен ли софт сохранять пользовательские данные.

Software, который относится к вашим данным как к расходному материалу — это не баг, а выбор. И пользователи это запоминают.

Выводы

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.