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)によるプラグインの仕組みは、ドラフトのプルリクエストとして未マージ(#8675、2026-10-09 更新)。最新リリースは 25.07.1(2025 年 7 月)。[3] [4] | 意図的に持たない。プラグインは「作らないもの」のリストに入っている。 |
| モードライン(ファイル内の設定) | 既定でオン(root ではオフ)。パッチ 9.2.0350(2026 年 4 月)以降、モードラインから設定できるオプションは短いリストに限られる('modelinestrict'、既定でオン)。過去の CVE: CVE-2019-12735、CVE-2026-34982。[5] [6] [7] [8] | 既定でオン(root ではオフ)。'modelineexpr' はオフ。マニュアルは「信頼できないテキストを編集する前にモードラインを無効にせよ」と述べる。CVE-2019-12735 は 0.3.6 で修正。[9] [7] | モードラインは解釈しない。要望(#729)は未解決で、基本的なサポートを加えるプルリクエスト(#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 年 3 月マージ)は開発ブランチにあり、まだどのリリースにも入っていない。[12] [13] [14] [3] | 設定ファイルはなく、読み込むべきプロジェクト固有の設定もない。 |
| 双方向制御文字(U+202E など) | <202e> と表示。マニュアルは、表示できない文字とゼロ幅の Unicode 文字は <xxxx> と表示され、表示できない文字には SpecialKey のハイライトが使われると述べる。[5] | SpecialKey のハイライトで <202e>、<2066> などと表示(既定のカラースキームでは、私たちの検証でシアン)。U+200B–200F、U+202A–202E、U+2060–206F、U+FEFF が、表示できない文字の表に入っている。[9] [15] | リリース 25.07.1 では目に見える印がない(私たちの検証では空白 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」で拒否される(#6492 での引用)。自動再読み込みは未解決の要望(#1125)。[20] [21] | 開いているファイルを監視し、本文・タブ・ツリーに変更箇所の印をつけ、保存の前にファイルのハッシュを比べる。変わっていれば何も書き込まない。確認と同じ瞬間の書き込みは、すり抜ける可能性があります。 |
sim: プロジェクト自身の仕様(README.md、SPEC.md、sim/SPEC.md、sim/CONCEPT.md)。
他のエディタが、まだ優れている点
sim は、幅広さと引き換えに、固定された、確かめられる振る舞いを選びました。次のどれかがいま必要なら、他のエディタを使ってください。
確認の方法
ドキュメントは、最新リリースのタグに固定しています。イシューとプルリクエストは上の日付時点の状態で引用しており、状態は変わりえます。「私たちの検証では」と書いた箇所は、名前を挙げたリリースで、実際の 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)

