Helix#
Helix is a modal terminal editor written in Rust. Modal like Vim, but with a selection-first model (inspired by Kakoune) and built-in LSP, Tree-sitter, and DAP with no plugins or configuration required.
The Big Idea#
Vim is “verb + noun”: d then w deletes a word.
Helix and Kakoune flip it to noun + verb: select a word with w,
then d deletes the selection. You always see what you’re about to
operate on.
The result is more discoverable (the editor shows the selection as you build it) and supports natural multi-cursor editing.
Modes#
Key |
Action |
|---|---|
|
return to normal mode (from any other mode) |
|
insert before selection |
|
insert after selection (append) |
|
insert at start of line |
|
insert at end of line |
|
open new line below, enter insert |
|
open new line above, enter insert |
|
enter select (extend) mode |
|
enter command line |
Movement#
Movements also extend the selection (selection-first model).
Hold v (or be in select mode) to keep the current head
anchored as you grow the range.
Key |
Action |
|---|---|
|
left / down / up / right |
|
next-word-start / prev-word-start / next-word-end |
|
WORD variants (whitespace-delimited) |
|
find next / previous occurrence of |
|
till next / previous occurrence of |
|
repeat last |
|
repeat last |
|
jump to file start |
|
jump to file end |
|
line end / line start |
|
first non-blank on line |
|
half-page down / up |
|
full-page down / up |
|
jump forward / backward through jump list |
|
repeat last motion |
Selection#
The headline feature. Build selections with motions, then a single verb acts on whatever is highlighted. Multiple selections are first-class; many bindings split, merge, or filter them.
Key |
Action |
|---|---|
|
select whole current line (extend down with repeated |
|
extend selection backward by line |
|
select whole file |
|
regex-select within current selection (interactive) |
|
regex-split current selection into multiple cursors |
|
split selection on newlines (one cursor per line) |
|
collapse selection to single point at cursor |
|
flip selection anchor / head |
|
keep only the primary selection |
|
remove the primary selection (keep the rest) |
|
previous / next selection in the multi-selection list |
|
rotate selection contents backward / forward |
|
trim whitespace from selection edges |
|
merge consecutive selections into one |
Editing#
Key |
Action |
|---|---|
|
delete (cut) selection |
|
change selection (delete + insert mode) |
|
yank (copy) selection |
|
paste after selection |
|
paste before selection |
|
replace selection with yanked content |
|
replace each character of selection with |
|
select register |
|
undo |
|
redo |
|
repeat last change |
|
join selected lines |
|
join lines without adding spaces |
|
toggle case of selection |
backtick |
lowercase selection |
|
uppercase selection |
|
indent |
|
dedent |
|
auto-format selection (via LSP / formatter) |
|
increment / decrement number under cursor |
Multi-Cursor#
Key |
Action |
|---|---|
|
add cursor below current selection |
|
add cursor above |
|
regex-split selection into one cursor per match |
|
select all regex matches inside selection (one cursor each) |
|
split on newlines |
|
keep only the primary selection (drop others) |
|
align all selections to the same column |
|
previous / next selection (primary jumps) |
Search#
Key |
Action |
|---|---|
|
search forward |
|
search backward |
|
next match |
|
previous match |
|
set search pattern from current selection |
|
clear search register |
|
global search across the workspace |
Windows / Splits#
Helix uses a Space w sub-menu (or Ctrl-w) for window
operations. Splits and buffer-per-pane.
Key |
Action |
|---|---|
|
horizontal split |
|
vertical split |
|
close current window |
|
focus split left / down / up / right |
|
move current window left / down / up / right |
|
cycle focus through splits |
|
close every split except current |
|
move current buffer to a new tab |
|
next / previous buffer (no split change) |
View / Scroll#
The z (or Z) prefix scrolls without moving the cursor.
Key |
Action |
|---|---|
|
center cursor’s line on screen |
|
move cursor’s line to top of view |
|
move cursor’s line to bottom of view |
|
scroll down / up one line (cursor follows) |
|
scroll down / up (cursor stays in view) |
|
scroll up / down one line |
Tree-sitter Motions#
Syntactic navigation. Helix knows the parse tree, so motions move by syntactic node rather than by character / word.
Key |
Action |
|---|---|
|
expand selection to parent syntax node |
|
shrink selection to first child node |
|
next sibling node |
|
previous sibling node |
|
previous / next function definition |
|
previous / next class |
|
previous / next argument |
|
previous / next test |
|
select inside textobject (e.g. |
|
select around textobject (with delimiters) |
Command Mode (:)#
Command |
Action |
|---|---|
|
write current buffer |
|
write all buffers |
|
quit (fails if buffer is modified) |
|
quit, discarding changes |
|
write and quit |
|
open file at path |
|
close current buffer |
|
next / previous buffer |
|
format current buffer via LSP |
|
reload buffer from disk |
|
reload every open buffer |
|
reload |
|
set an option for this session |
|
switch theme |
|
restart the language server |
|
stop the language server |
|
print current working directory |
|
change working directory |
Macros and Registers#
Helix has Vim-style macros with explicit registers.
Key |
Action |
|---|---|
|
start / stop recording a macro |
|
replay macro stored in register |
|
select a register for the next yank / paste |
|
yank to |
|
paste from |
Discovery#
Command |
Action |
|---|---|
|
launch the interactive tutor |
|
check language-server / formatter availability |
|
same as |
|
open keymap help |
hold any prefix key |
hint popup lists what each next key does |
Built-In Without Configuration#
Out of the box, with no plugins. The list below is the entire setup that takes a Neovim user a weekend to assemble (LSP, Tree-sitter, DAP, fuzzy pickers, multi-cursor) and it ships with the binary. Install a language server and the rest just works:
LSP for many languages, install the language server, Helix uses it. Goto definition, hover, rename, code actions, completions.
Tree-sitter, syntax highlighting, indentation, motion by syntactic node.
DAP (Debug Adapter Protocol), step debugging.
Built-in pickers for files, buffers, symbols, diagnostics, git log, registers.
Files#
Configuration is TOML, not Lua or Vimscript. Three files cover the
whole surface area: editor behavior in config.toml, language
servers and formatters in languages.toml, and themes in
themes/. There is no plugin system in stable as of 2026.
~/.config/helix/config.toml, main config.~/.config/helix/languages.toml, language servers and formatters.~/.config/helix/themes/, custom themes.
Configuration is TOML, not Lua / Vimscript. There’s no plugin system yet (a plugin system is in progress as of 2026); you customize what exists, not what doesn’t.
Strengths#
What Helix gets right that Vim and Neovim don’t. The headline is zero-setup productivity; the editor is fully usable the first time you launch it, with no plugin manager, no Lua scripting, and no copy-paste from someone else’s dotfiles.
Zero-setup productivity, works on day one.
Modern out-of-the-box, LSP, Tree-sitter, multi-cursor, fuzzy pickers all built in.
Fast, Rust; instant startup.
Discoverable modal, the noun-verb model exposes selections as you go.
Weaknesses#
What you give up by picking the new modal editor. The plugin gap is the biggest one. If you depend on a specific Neovim plugin, Helix won’t have it, and the noun-verb model takes retraining for users coming from Vim.
No plugin system in stable as of 2026 (in progress).
Smaller ecosystem than Vim / Neovim.
Different muscle memory, noun-verb retraining for Vim users.
TOML config is less powerful than Lua scripting.
When to Pick Helix#
The default for new modal users in 2026, and the path of least resistance for anyone who wants the modern feature set without becoming a Neovim configurator. If you need deep customization or specific Neovim plugins, Helix isn’t there yet.
You want modal editing without spending a weekend on configuration.
You like the Kakoune selection-first idea.
You want LSP / Tree-sitter / multi-cursor as defaults, not plugins.
You’re new to modal editing and want a productive Day 1.
If you need deep customization or specific Neovim plugins, Helix isn’t there yet; but it’s the best default modal editor for many users in 2026.