sim과 Vim, Neovim, Helix
Vim, Neovim, Helix는 성숙하고 강력한 에디터이고, sim은 새로 나온 에디터입니다. 이 표는 1차 출처, 곧 각 에디터의 공식 문서, 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] | 의도적으로 없음: 플러그인은 sim이 만들지 않는 것의 목록에 올라 있습니다. |
| 모드라인(파일 안의 설정) | 기본값은 켜짐(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>로 표시됩니다. 매뉴얼에 따르면 출력할 수 없는 문자와 너비가 0인 Unicode 문자는 <xxxx>로 표시되고, 출력할 수 없는 문자에는 SpecialKey 하이라이트가 쓰입니다.[5] | SpecialKey 하이라이트로 <202e>, <2066> 등으로 표시됩니다(기본 컬러 스킴에서는 시안색, 저희 테스트에서). U+200B–200F, U+202A–202E, U+2060–206F, U+FEFF가 출력할 수 없는 문자 표에 들어 있습니다.[9] [15] | 릴리스 25.07.1에는 눈에 보이는 표시가 없습니다(저희 테스트에서는 빈 셀 하나를 차지했습니다). 너비가 0인 문자는 열려 있는 이슈(#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은 폭넓음을 내주고, 고정되어 확인할 수 있는 동작을 택했습니다. 아래 중 하나라도 지금 필요하다면 다른 에디터를 사용하십시오.
확인 방법
문서는 최신 릴리스 태그에 고정했습니다. 이슈와 풀 리퀘스트는 위 날짜 기준의 상태로 인용했으며, 그 상태는 바뀔 수 있습니다. 항목에 “저희 테스트에서”라고 적힌 곳은, 해당 릴리스에서 실제 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)

