What features does Helix offer?

Updated

Helix is a terminal-based modal text editor built in Rust. Its feature set centers on multiple selections as a core editing primitive, Tree-sitter-based syntax understanding, and built-in language server support — all without a plugin system or additional configuration. If you want an editor that works over SSH, tmux, or a plain terminal with modern defaults and minimal setup, Helix's features are designed for exactly that.

Multiple selections as a core primitive

Helix treats multiple cursors and multiple selections as a fundamental editing concept rather than an add-on. Inspired by Kakoune, commands operate on selections, which lets you edit concurrent parts of your code at once.

In practice, this means you select what you want to change first, then act on it — the selection comes before the command. This is a different mental model from Vim, where you typically issue an operator and then a motion.

Tree-sitter integration

Helix uses Tree-sitter to build error-tolerant, robust syntax trees. This powers several features:

  • Syntax highlighting that stays accurate even in incomplete or malformed code
  • Indent calculation based on the actual syntax structure
  • Code navigation and selection of syntax tree nodes instead of plain text

Because the trees are error-tolerant, highlighting and navigation still work while you're mid-edit and the code doesn't fully parse.

Language server support

Helix integrates the Language Server Protocol with no additional configuration. For supported languages, this provides:

  • Auto completion
  • Go to definition
  • Documentation lookup
  • Diagnostics
  • Other IDE-style features

The key detail is "no additional configuration" — language server support is built in rather than assembled through plugins.

Built-in modern features

Helix ships with a set of conveniences already included:

Feature What it does
Fuzzy finder Jump to files and symbols
Project-wide search Search across the whole project
Themes Built-in color themes
Auto-closing bracket pairs Closes brackets automatically
Surround integration Add, change, and delete surrounding characters

Platform and runtime characteristics

Helix is built in Rust and runs in the terminal. It explicitly avoids Electron, VimScript, and JavaScript. This means you can use it over SSH, tmux, or a plain terminal, and it is lightweight enough to be considerate of laptop battery life.

What Helix does not have (yet)

Two limitations are worth knowing before you commit:

  • No plugin system. The project intends to add one eventually, but it will take time.
  • No GUI frontend yet. A WebGPU-based alternative frontend is something the project would like to prototype, but it does not exist today.

How it differs from Kakoune and Vim

Helix's feature choices are best understood in contrast:

  • Versus Kakoune: Kakoune is composable by design and relies on external tooling for splits and language server support. Helix integrates more of this directly, and uses Tree-sitter for highlighting and code analysis.
  • Versus Vim: Helix started from scratch, making breaking changes based on Vim experience. The result is a smaller codebase, modern defaults, less config-file fiddling, and an easier start for people who have never used a modal editor.

Who these features suit

Helix is a reasonable fit if you want multiple selections, Tree-sitter syntax awareness, and language server features working out of the box in a terminal, and you don't need a plugin ecosystem or a GUI right now. If your workflow depends on a mature plugin system or a graphical frontend, those are the gaps to weigh against the built-in feature set.