sim vs Vim, Neovim and Helix
Vim, Neovim and Helix are mature, capable editors, and sim is new. This table covers only what can be checked against a primary source: the editors' own docs, CVE entries, release notes and issue trackers. Where the sources do not say, the table says nothing.
Checked on 2026-10-17. Latest releases then: Vim 9.2.1202, Neovim 0.12.6, Helix 25.07.1.
| Topic | Vim | Neovim | Helix | sim |
|---|---|---|---|---|
| Extension system | Vim script and packages.[1] | Lua, and Vim script plugins.[2] | No plugin system in a release. A Scheme (Steel) plugin system is an open draft pull request (#8675, updated 2026-10-09). The latest release is 25.07.1 (July 2025).[3] [4] | None, by design: plugins are on its list of things it does not build. |
| Modelines (settings in a file) | On by default (off for root). Since patch 9.2.0350 (April 2026) only a short list of options may be set from a modeline ('modelinestrict', on by default). Past CVEs: CVE-2019-12735, CVE-2026-34982.[5] [6] [7] [8] | On by default (off for root); 'modelineexpr' is off. The manual says to disable modelines before editing untrusted text. CVE-2019-12735 was fixed in 0.3.6.[9] [7] | Does not parse modelines: the request (#729) is open, and a pull request (#7788) was closed without merging.[10] [11] | Never read. Settings and commands do not come from file contents. |
| Project-local configuration | 'exrc' is off by default. The manual calls turning it on “a potential security leak” and says “BETTER NOT SET THIS OPTION!”.[5] | 'exrc' is off by default. When on, .nvim.lua, .nvimrc and .exrc run only if the file is in the trust list (:trust).[9] | Loads a .helix/config.toml from the workspace (documented for 25.07.1). Workspace trust, which asks first (PR #15177, merged March 2026), is on the development branch and in no release yet.[12] [13] [14] [3] | No config files, and no project-local configuration to load. |
| Bidirectional control characters (U+202E and friends) | Shown as <202e>: the manual says unprintable and zero-width Unicode characters are displayed as <xxxx>, and that SpecialKey highlighting is used for unprintable characters.[5] | Shown as <202e>, <2066> and so on, in the SpecialKey highlight (cyan in the default color scheme, in our test): U+200B–200F, U+202A–202E, U+2060–206F and U+FEFF are in its unprintable table.[9] [15] | No visible marker in release 25.07.1 (they take a blank cell in our test). Zero-width characters are an open issue (#11255), and control characters are written raw to the terminal (#16320, open).[16] [17] [3] | <U+202E> on a magenta block in every state, never sent raw. The literal text <U+202E> gets no block. |
| A file changed by another process | Remembers the file's timestamp, mode and size and warns when they differ (checked after shell commands, in the GUI on focus, and by :checktime); 'autoread' reloads a buffer you have not changed.[18] | The same checks and warnings; 'autoread' reloads a buffer you have not changed.[19] | A write is refused with “file modified by an external process, use :w! to overwrite” (quoted in #6492). Automatic reload is an open request (#1125).[20] [21] | Watches the open file, marks what changed in text, tab and tree, and compares the file's hash before it saves; it writes nothing if the file changed. A write in the same instant as that check can still slip through. |
sim: the project's own spec (README.md, SPEC.md, sim/SPEC.md, sim/CONCEPT.md).
What the others still do better, for now
sim trades breadth for a fixed, checkable behavior. If you need any of these today, use the others.
- Neovim and Helix ship a language-server client. sim has none yet; a sandboxed one is planned.[27] [28]
- Vim and Neovim can be extended with packages and plugins. sim will not offer plugins.[1] [2]
- Vim and Neovim record and replay macros. sim has no macros yet; they are planned. Registers and marks are in sim 0.2.0.[1]
How this was checked
Docs are pinned to the latest release tag. Issues and pull requests are cited with the state they had on the date above, and that state can change. Where a row says “in our test”, we opened a file with a real U+202E in the named release and looked at what it drew; the sources cannot say it for us. If something here is out of date or wrong, it should be corrected.
Sources
- 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)

