sim и Vim, Neovim, Helix
Vim, Neovim и Helix — зрелые, мощные редакторы, а sim — новый. В этой таблице только то, что можно проверить по первоисточнику: собственной документации редакторов, записям CVE, заметкам о релизах и трекерам задач. Если источники молчат, таблица тоже молчит.
Проверено 2026-10-17. Последние на тот момент релизы: Vim 9.2.1202, Neovim 0.12.6, Helix 25.07.1.
| Тема | Vim | Neovim | Helix | sim |
|---|---|---|---|---|
| Система расширений | Vim script и пакеты.[1] | Lua и плагины на Vim script.[2] | В релизах системы плагинов нет. Система плагинов на Scheme (Steel) — открытый черновой pull request (#8675, обновлён 2026-10-09). Последний релиз — 25.07.1 (июль 2025).[3] [4] | Нет, намеренно: плагины входят в список того, что он не делает. |
| Строки режима (modeline; настройки внутри файла) | Включены по умолчанию (для root выключены). С патча 9.2.0350 (апрель 2026) из modeline можно задать только короткий список параметров ('modelinestrict', включён по умолчанию). Прошлые CVE: CVE-2019-12735, CVE-2026-34982.[5] [6] [7] [8] | Включены по умолчанию (для root выключены); 'modelineexpr' выключен. В руководстве сказано отключать modeline перед правкой недоверенного текста. CVE-2019-12735 исправлена в 0.3.6.[9] [7] | Не разбирает modeline: запрос (#729) открыт, а pull request (#7788) закрыт без слияния.[10] [11] | Никогда не читаются. Настройки и команды не берутся из содержимого файлов. |
| Конфигурация внутри проекта | 'exrc' по умолчанию выключен. В руководстве его включение названо «a potential security leak» (потенциальная брешь в безопасности), и там же сказано «BETTER NOT SET THIS OPTION!» (лучше не устанавливать эту опцию).[5] | 'exrc' по умолчанию выключен. Когда он включён, .nvim.lua, .nvimrc и .exrc выполняются, только если файл есть в списке доверенных (:trust).[9] | Загружает .helix/config.toml из рабочей области (задокументировано для 25.07.1). Доверие к рабочей области, которое сначала спрашивает разрешения (PR #15177, влит в марте 2026), находится в ветке разработки и пока не вошло ни в один релиз.[12] [13] [14] [3] | Файлов конфигурации нет, как и конфигурации проекта, которую можно было бы загрузить. |
| Двунаправленные управляющие символы (U+202E и родственные) | Показываются как <202e>: в руководстве сказано, что непечатаемые символы Unicode и символы нулевой ширины отображаются как <xxxx>, а для непечатаемых символов используется подсветка SpecialKey.[5] | Показываются как <202e>, <2066> и так далее подсветкой SpecialKey (в нашем тесте — бирюзовой в цветовой схеме по умолчанию): U+200B–200F, U+202A–202E, U+2060–206F и U+FEFF есть в его таблице непечатаемых символов.[9] [15] | В релизе 25.07.1 видимой отметки нет (в нашем тесте они занимают пустую ячейку). Символы нулевой ширины — открытая задача (#11255), а управляющие символы записываются в терминал как есть (#16320, открыта).[16] [17] [3] | <U+202E> на пурпурном блоке в любом состоянии, никогда не отправляется как есть. Буквальный текст <U+202E> блока не получает. |
| Файл, изменённый другим процессом | Запоминает время изменения, режим и размер файла и предупреждает, если они отличаются (проверяется после команд оболочки, в GUI — при получении фокуса и по :checktime); 'autoread' перечитывает буфер, который вы не меняли.[18] | Те же проверки и предупреждения; 'autoread' перечитывает буфер, который вы не меняли.[19] | Запись отклоняется с сообщением «file modified by an external process, use :w! to overwrite» (файл изменён внешним процессом, для перезаписи используйте :w!), как цитируется в #6492. Автоматическая перезагрузка — открытый запрос (#1125).[20] [21] | Следит за открытым файлом, отмечает изменённое в тексте, на вкладке и в дереве и сравнивает хеш файла перед сохранением; если файл изменился, ничего не записывает. Запись в тот же миг, что и эта проверка, всё же может проскочить. |
sim: собственная спецификация проекта (README.md, SPEC.md, sim/SPEC.md, sim/CONCEPT.md).
Что другие пока делают лучше
sim меняет широту возможностей на фиксированное, проверяемое поведение. Если что-то из этого нужно вам сегодня, пользуйтесь другими редакторами.
- В Neovim и Helix есть клиент языкового сервера. В sim его пока нет; клиент в песочнице запланирован.[27] [28]
- Vim и Neovim можно расширять пакетами и плагинами. sim плагинов предлагать не будет.[1] [2]
- Vim и Neovim записывают и воспроизводят макросы. В sim макросов пока нет; они запланированы. Регистры и метки есть в sim 0.2.0.[1]
Как это проверялось
Документация привязана к тегу последнего релиза. Задачи и pull request приводятся в том состоянии, в каком они были на указанную выше дату, и это состояние может измениться. Там, где в строке сказано «в нашем тесте», мы открыли файл с настоящим U+202E в названном релизе и посмотрели, что рисуется; источники не могут сказать этого за нас. Если здесь что-то устарело или неверно, это должно быть исправлено.
Источники
- Vim 9.2.1202, runtime/doc/repeat.txt (packages, recording)
- Neovim, Lua guide
- Helix 25.07.1 release (the latest, July 2025)
- Helix PR #8675: Add Steel as an optional plugin system (draft, open)
- Vim 9.2.1202, runtime/doc/options.txt ('modeline', 'modelinestrict', 'exrc', 'isprint', 'fsync')
- Vim patch 9.2.0350: Enabling modelines poses a risk ('modelinestrict')
- NVD: CVE-2019-12735 (Vim before 8.1.1365 and Neovim before 0.3.6, modeline)
- NVD: CVE-2026-34982 (Vim before 9.2.0276, modeline sandbox bypass)
- Neovim 0.12.6, runtime/doc/options.txt ('modeline', 'modelineexpr', 'exrc', 'isprint', 'fsync')
- Helix issue #729: Vim modeline parsing (open)
- Helix PR #7788: add basic modeline support (closed, not merged)
- Helix 25.07.1, book/src/configuration.md (a config.toml local to a project)
- Helix PR #15177: Add workspace trust support (merged 2026-03-26)
- Helix development branch, book/src/workspace-trust.md
- Neovim 0.12.6, src/nvim/mbyte.c (utf_printable)
- Helix issue #11255: Substitute unprintable characters in a buffer (open)
- Helix issue #16320: C0 control characters are written raw (open)
- Vim 9.2.1202, runtime/doc/editing.txt (timestamps)
- Neovim 0.12.6, runtime/doc/editing.txt (timestamps, 'autoread')
- Helix issue #6492: make the “file modified by an external process” message louder
- Helix issue #1125: automatic reload when file changes externally (open)
- sim, NOTES.md at commit d3caae2: “Hidden characters in Neovim 0.12.5, measured against sim” (2026-10-18)
- The Unicode Standard 18.0, chapter 23, Special Areas and Format Characters (§23.4 Variation Selectors, §23.9 Tag Characters)
- Unicode Technical Standard #51: Unicode Emoji, revision 31 (ZWJ sequences, emoji tag sequences, Annex C)
- Johann Rehberger, ASCII Smuggler Tool: Crafting Invisible Text and Decoding Hidden Codes (Embrace The Red, 14 January 2024)
- Endor Labs, Invisible Threats and the Blind Spots of Security (an analysis of GlassWorm)
- Neovim, LSP client
- Helix README (features)

