sim vs Vim, Neovim e Helix
Vim, Neovim e Helix são editores maduros e capazes, e o sim é novo. Esta tabela cobre apenas o que pode ser conferido em uma fonte primária: a documentação dos próprios editores, registros de CVE, notas de versão e rastreadores de issues. Onde as fontes não dizem nada, a tabela também não diz.
Verificado em 2026-10-17. Últimas versões na época: Vim 9.2.1202, Neovim 0.12.6, Helix 25.07.1.
| Tópico | Vim | Neovim | Helix | sim |
|---|---|---|---|---|
| Sistema de extensões | Vim script e pacotes.[1] | Lua e plugins em Vim script.[2] | Nenhum sistema de plugins em uma versão lançada. Um sistema de plugins em Scheme (Steel) é um pull request em rascunho ainda aberto (#8675, atualizado em 2026-10-09). A versão mais recente é a 25.07.1 (julho de 2025).[3] [4] | Nenhum, por decisão de projeto: plugins estão na lista do que ele não constrói. |
| Modelines (configurações dentro de um arquivo) | Ativadas por padrão (desativadas para root). Desde o patch 9.2.0350 (abril de 2026), apenas uma lista curta de opções pode ser definida por uma modeline ('modelinestrict', ativada por padrão). CVEs anteriores: CVE-2019-12735, CVE-2026-34982.[5] [6] [7] [8] | Ativadas por padrão (desativadas para root); 'modelineexpr' está desativada. O manual diz para desativar as modelines antes de editar texto não confiável. O CVE-2019-12735 foi corrigido na 0.3.6.[9] [7] | Não interpreta modelines: o pedido (#729) está aberto, e um pull request (#7788) foi fechado sem merge.[10] [11] | Nunca lidas. Configurações e comandos não vêm do conteúdo dos arquivos. |
| Configuração local do projeto | 'exrc' vem desativada por padrão. O manual chama ativá-la de “a potential security leak” (uma possível brecha de segurança) e diz “BETTER NOT SET THIS OPTION!” (é melhor não definir esta opção!).[5] | 'exrc' vem desativada por padrão. Quando ativada, .nvim.lua, .nvimrc e .exrc só são executados se o arquivo estiver na lista de confiança (:trust).[9] | Carrega um .helix/config.toml do workspace (documentado na 25.07.1). O recurso de confiança no workspace, que pergunta antes (PR #15177, mesclado em março de 2026), está na branch de desenvolvimento e ainda não está em nenhuma versão.[12] [13] [14] [3] | Sem arquivos de configuração e sem configuração local de projeto para carregar. |
| Caracteres de controle bidirecionais (U+202E e companhia) | Mostrado como <202e>: o manual diz que caracteres Unicode não imprimíveis e de largura zero são exibidos como <xxxx>, e que o destaque SpecialKey é usado para caracteres não imprimíveis.[5] | Mostrados como <202e>, <2066> e assim por diante, no destaque SpecialKey (ciano no esquema de cores padrão, no nosso teste): U+200B–200F, U+202A–202E, U+2060–206F e U+FEFF estão na tabela de caracteres não imprimíveis dele.[9] [15] | Nenhum marcador visível na versão 25.07.1 (eles ocupam uma célula em branco no nosso teste). Os caracteres de largura zero são uma issue aberta (#11255), e os caracteres de controle são gravados crus no terminal (#16320, aberta).[16] [17] [3] | <U+202E> sobre um bloco magenta em qualquer estado, nunca enviado cru. O texto literal <U+202E> não recebe bloco. |
| Arquivo alterado por outro processo | Memoriza o carimbo de data e hora, o modo e o tamanho do arquivo e avisa quando eles mudam (verificado depois de comandos de shell, na GUI ao receber o foco e por :checktime); 'autoread' recarrega um buffer que você não alterou.[18] | As mesmas verificações e avisos; 'autoread' recarrega um buffer que você não alterou.[19] | Uma gravação é recusada com a mensagem “file modified by an external process, use :w! to overwrite” (“arquivo modificado por um processo externo, use :w! para sobrescrever”; citada em #6492). O recarregamento automático é um pedido aberto (#1125).[20] [21] | Observa o arquivo aberto, marca o que mudou no texto, na aba e na árvore, e compara o hash do arquivo antes de salvar; não grava nada se o arquivo mudou. Uma escrita no mesmo instante dessa verificação ainda pode passar. |
sim: a especificação do próprio projeto (README.md, SPEC.md, sim/SPEC.md, sim/CONCEPT.md).
O que os outros ainda fazem melhor, por enquanto
O sim troca amplitude por um comportamento fixo e verificável. Se você precisa de qualquer um destes recursos hoje, use os outros.
- Neovim e Helix incluem um cliente de servidor de linguagem. O sim ainda não tem; um cliente em sandbox está planejado.[27] [28]
- Vim e Neovim podem ser estendidos com pacotes e plugins. O sim não oferecerá plugins.[1] [2]
- Vim e Neovim gravam e reproduzem macros. O sim ainda não tem macros; elas estão planejadas. Registradores e marcas estão no sim 0.2.0.[1]
Como isto foi verificado
A documentação é fixada na tag da versão mais recente. Issues e pull requests são citados com o estado que tinham na data acima, e esse estado pode mudar. Quando uma linha diz “no nosso teste”, abrimos um arquivo com um U+202E de verdade na versão indicada e olhamos o que foi desenhado; as fontes não conseguem dizer isso por nós. Se algo aqui estiver desatualizado ou errado, deve ser corrigido.
Fontes
- 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)

