i switched from neovim to helix for six months in 2021. i switched back. this is the story of why i left, what i learned from the new editor, and what i brought back with me.
what helix does better
helix is built around a single insight: selection-then-action is better than action-then-motion. in vim, the typical edit is ci" — change inside quotes. the grammar is verb, modifier, object. in helix, the same edit is mi"c — match inside quotes, then change. the selection is a first-class object; you can see it before you commit to the edit.
this sounds like a minor difference. it is not. once you get used to seeing the selection highlighted before you act, vim’s mode-based editing feels like typing commands in the dark. you guess where the motion will land, press the keys, and check the result.
helix’s multi-cursor support is the other killer feature. pressing C adds a cursor for each matching selection on the screen. you can edit ten lines simultaneously without macros or regex. neovim has plugins for this, but helix’s implementation is faster, more predictable, and never conflicts with the built-in motions.
what helix does worse
helix does not do modal editing. it has two modes — normal and insert — but the normal mode uses keybinds that are chords, not verbs. there is no operator-pending mode, no d waiting for a motion, no text objects composed from other text objects.
this means complex edits require more keystrokes. in vim, dap deletes a paragraph. in helix, you select the paragraph with map, then delete with d. it is one more keypress, but it adds up over a thousand edits.
the plugin system is the real dealbreaker. helix has no plugin system at all. you get whatever the core team implements. for a programmer whose workflow depends on language-specific features — custom linters, formatters, snippet engines — this is a hard wall.
what i brought back
six months in helix changed how i use neovim. i installed vim-sandwich to get verb-noun-object text objects that work like helix’s selections. i replaced my fuzzy finder config with telescope bound to a single key. i stopped writing custom mappings for every language and started relying on the built-in vim.treesitter queries.
the biggest change was mental: i stopped treating my editor config as a personal project and started treating it as a tool. helix’s minimalism was a healthy reset. my current neovim config is half the size it was before the experiment, and i understand every line.
conclusion
editors are not ideologies. helix taught me that selection-first editing is better for some operations and worse for others. the mature response is not to pick a side but to borrow the good ideas and implement them in whatever environment you actually work in. my neovim config today is better because i left it for six months.