For nearly three decades, the terminal-based text editing landscape has been thoroughly dominated by Vim and its modern successor, Neovim. Their modal editing paradigm—where you switch between inserting text and executing commands—allows for unparalleled speed. However, this speed comes with a notorious “configuration tax.” To turn Neovim into a modern Integrated Development Environment (IDE), a user must spend hours, if not days, writing complex Lua configuration files, managing package managers, and debugging conflicting plugins just to get basic features like autocomplete and syntax highlighting.
Recently, a new challenger written entirely in Rust has emerged, promising to deliver the blistering speed of modal editing while eliminating the configuration hell entirely.
Meet Helix, the self-proclaimed “post-modern” text editor.
Helix radically changes the core philosophy of how you interact with code, drawing heavy inspiration from Kakoune’s selection-first model. More importantly, it features “batteries included” integration with the Language Server Protocol (LSP) and Treesitter. You download the binary, and you instantly have a fully functioning IDE in your terminal.
1. The Paradigm Shift: Selection-First Editing
If you are coming from Vim, the biggest hurdle to learning Helix is untraining your muscle memory regarding the order of operations.
In Vim, the grammar is Action → Object.
If you want to delete a word, you press d (the action for Delete) followed by w (the object for Word). The action occurs instantly, and the word vanishes. While fast, this relies entirely on mental mapping. If you want to delete everything inside a complex set of nested parentheses (di(), you press the keys and hope you calculated the scope correctly. If you were wrong, you have to press u to undo and try again.
Helix flips this grammar upside down to Object → Action.
In Helix, you press w (the object for Word). Immediately, the word is visually highlighted on your screen. You can see exactly what is selected. If the selection is correct, you then press d (the action for Delete).
This “Selection → Action” model provides incredible visual feedback. You never have to guess the scope of your operation.
Extending Selections
Because everything is a visual selection, Helix makes it incredibly easy to expand your scope.
w: Selects the next word.e: Selects to the end of the current word.x: Selects the entire current line. Pressingxmultiple times extends the selection downward line by line.mi(: “Match Inside Parentheses”. This instantly highlights all text inside the nearest set of brackets. You can see the highlight before you presscto change it ordto delete it.
2. The Power of Multiple Cursors
While Vim requires complex plugins or macro recordings to edit multiple disparate lines simultaneously, Helix treats multiple cursors as a first-class, core mechanical feature. It is arguably the most powerful aspect of the editor.
Global Find and Replace (The Helix Way)
Imagine you need to rename a variable called temp_data to processed_data everywhere in your current file. In Vim, you would write a regex substitution command: :%s/temp_data/processed_data/g.
In Helix, the workflow is entirely visual and instantaneous:
- Press
%to select the entire document. (The whole screen highlights). - Press
s(Select by Regex). A prompt appears at the bottom. - Type
temp_dataand press Enter. - Helix instantly creates a distinct cursor on every single instance of
temp_datain the file. - Press
c(Change). The words disappear, and you enter Insert mode. - Type
processed_data. You will see the text being typed simultaneously across all cursors in real-time. - Press
Escapeto return to Normal mode, and,(comma) to collapse back to a single primary cursor.
Cursor Manipulation
You can also spawn cursors manually:
C(Shift + C): Copies the current selection and spawns a new cursor directly on the line below it.Alt + C: Spawns a new cursor directly on the line above.
This makes editing block-aligned data, like JSON files, CSS variables, or YAML configurations, an absolute breeze.
3. Batteries Included: The Zero-Config Philosophy
The defining characteristic of Helix is its refusal to rely on a complex plugin ecosystem. The developers recognized that 95% of modern programmers want the exact same features: intelligent autocomplete, go-to-definition, and accurate syntax highlighting.
Instead of forcing you to piece these tools together, Helix compiles them directly into the core binary.
Native LSP Integration
The Language Server Protocol (LSP) is what powers the intelligence of editors like VS Code. Helix speaks LSP natively.
As long as you have the language server binary installed on your operating system (e.g., typescript-language-server for JS/TS, pylsp for Python, rust-analyzer for Rust), Helix will automatically detect it and attach it to your buffer the moment you open a file.
Without writing a single line of configuration, you immediately gain access to:
gd: Go to Definition (jumps to where a function or class is defined).gr: Find all References (shows a menu of everywhere a function is called).K(Shift + K): Opens a floating window displaying the hover documentation and type signatures for the function under your cursor.Space + r + n: Symbol Rename. This isn’t just a text find-and-replace; the LSP analyzes the Abstract Syntax Tree (AST) to intelligently rename a variable across your entire project securely.Space + a: Apply Code Action (auto-fixers provided by the language server).
Native Treesitter Integration
Traditionally, text editors use Regular Expressions (Regex) to colorize text. Regex is fast but dumb; it cannot differentiate between a variable named String and the actual String type declaration.
Treesitter is a modern parsing library that builds a full syntax tree of your code as you type. Helix uses Treesitter natively for all its syntax highlighting. The result is perfectly accurate, semantically aware coloring that makes code vastly easier to read.
But Treesitter provides more than just colors. Helix uses the Treesitter syntax tree to power advanced text objects.
]f: Jump to the next function definition.[c: Jump to the previous class definition.m a f: “Match Around Function”. This instantly selects the entirety of the function your cursor is currently resting inside, no matter how long it is.
4. The Space Menu: Discoverability
One of the criticisms of modal editors is that they are “undiscoverable.” If you don’t know the obscure keyboard shortcut to open a file tree, you have to Google it.
Helix solves this elegantly with the Space Menu.
The Spacebar acts as your primary leader key. Whenever you press Space in Normal mode, a beautifully formatted popup menu appears at the bottom of the screen, detailing every available command and its corresponding keystroke. If you forget how to trigger the file picker, you just press Space and read the menu.
Core Space Commands
Space + f(File Picker): Opens a blazing-fast, built-in fuzzy finder (similar to fzf or Telescope in Neovim) that allows you to search for files across your entire project directory instantly.Space + /(Global Search): Opens a fuzzy finder that searches the actual text contents of every file in your project using Regex.Space + b(Buffer Picker): Displays a list of all currently open files, allowing you to quickly switch between them.Space + d(Diagnostics): Opens a panel showing all the warnings and errors reported by your Language Server.
5. Installation and Configuration
Because Helix is written in Rust, it compiles down to a single, highly optimized binary executable.
Installation
You can install Helix via most major package managers:
Debian / Ubuntu:
sudo add-apt-repository ppa:maveonair/helix-editor
sudo apt update
sudo apt install helix
Arch Linux:
sudo pacman -S helix
macOS (via Homebrew):
brew install helix
Alternatively, if you have the Rust toolchain installed, you can compile it directly from source via Cargo:
cargo install helix-term --locked
To launch the editor, simply type hx in your terminal.
hx main.rs
Configuration Files
While Helix requires zero configuration to function perfectly, you can customize its appearance and behavior using standard TOML files located in your user configuration directory (typically ~/.config/helix/).
config.toml (Editor Settings)
This file controls the editor’s UI and behavior.
theme = "gruvbox"
[editor]
line-number = "relative"
cursorline = true
color-modes = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
languages.toml (LSP Overrides)
If you are working with a niche language or want to configure a specific language server with custom flags, you use the languages.toml file.
[[language]]
name = "python"
language-servers = [ "pyright", "ruff" ]
6. Vim vs. Helix: A Keybinding Comparison
One of the most common questions developers ask is: “How different is Helix from Vim, really?” The grammar is reversed, but the underlying keyboard keys are intentionally similar. Here is a direct side-by-side comparison of the most common operations to help you build a mental map.
Core Operations Compared
| Action | Vim Sequence | Helix Sequence |
|---|---|---|
| Delete a word | dw (Action → Object) | wd (Object → Action) |
| Change inside brackets | ci( | mi(c |
| Delete to end of line | D | Gld |
| Copy (yank) a line | yy | xyy or xy |
| Undo | u | u |
| Redo | Ctrl+r | U |
| Go to definition | gd (via plugin) | gd (built-in) |
| Search forward | /pattern | /pattern |
| Global substitution | :%s/old/new/g | %s → type regex → c → type replacement |
| Open file picker | :FZF or :Telescope (via plugin) | Space + f (built-in) |
| Show hover docs | Via LSP plugin | K (built-in) |
| Rename symbol | Via LSP plugin | Space + r + n (built-in) |
The key insight from this table: in Helix, the operations you needed plugins for in Vim are all built-in. The trade-off is that the Selection → Action grammar requires unlearning muscle memory, but in exchange you get visible feedback on every operation.
7. Advanced Navigation and Registers
Jump Lists and Global Marks
Helix maintains a jump list of your recent cursor positions across files. This is invaluable when you use gd (Go to Definition) and want to return to where you came from.
Ctrl+i: Jump forward in the jump list (to where you were before jumping away).Ctrl+o: Jump backward in the jump list (return to your previous cursor position after agdor file switch).
Using Registers
Helix uses registers to store yanked (copied) text, just like Vim. However, the workflow is streamlined.
- The default register: When you press
yto yank text, it is stored in the default register"and also automatically synced to the system clipboard. - The system clipboard: Accessing the system clipboard is done via the
+register. Press"then+thenyto explicitly yank to the system clipboard, or"then+thenpto paste from it. In practice, Helix often handles clipboard sync automatically based on your terminal configuration. - Named registers: Press
"followed by a letter (a-z) before a yank or paste to use a named register:"ayyanks into registera, and"appastes from it.
Split Panes and Window Management
Helix supports horizontal and vertical splits natively through a clean window subsystem. You don’t need a tmux or plugin for basic multi-file editing.
Ctrl + w + v: Split the current window vertically (side by side).Ctrl + w + s: Split the current window horizontally (stacked).Ctrl + w + h / j / k / l: Move focus between splits (left / down / up / right).Ctrl + w + q: Close the currently focused split.Ctrl + w + f: Open the file picker within the current split, allowing you to quickly load a different file into that pane.
This native split support is perfect for comparing two versions of a file side-by-side or keeping a unit test file open next to the implementation you are editing.
8. Helix Keybinding Cheatsheet
This reference table covers the most essential Helix keybindings across all common editing tasks. All bindings are executed in Normal mode unless otherwise specified.
Navigation
| Keybinding | Action |
|---|---|
h, j, k, l | Move cursor left, down, up, right |
w / b | Move to next / previous word start |
e | Move to end of current word |
gg | Jump to beginning of file |
ge | Jump to end of file |
Ctrl+d / Ctrl+u | Scroll half-page down / up |
]f / [f | Jump to next / previous function |
]c / [c | Jump to next / previous class |
Selections and Editing
| Keybinding | Action |
|---|---|
x | Select current line (extend with each press) |
% | Select entire file |
mi( | Select everything inside (...) |
ma{ | Select everything around {...} (includes braces) |
d | Delete selection |
c | Change selection (delete and enter Insert mode) |
y | Yank (copy) selection |
p | Paste after cursor |
P | Paste before cursor |
~ | Toggle case of selection |
> / < | Indent / unindent selection |
LSP Commands
| Keybinding | Action |
|---|---|
gd | Go to Definition |
gr | Find all References |
K | Show hover documentation |
Space + a | Apply code action (auto-fix) |
Space + r + n | Rename symbol (AST-aware) |
Space + d | Show all diagnostics (errors/warnings) |
[d / ]d | Jump to previous / next diagnostic |
File and Buffer Management
| Keybinding | Action |
|---|---|
Space + f | Fuzzy file picker |
Space + / | Fuzzy global search (by content) |
Space + b | Buffer switcher |
:w | Save current file |
:q | Quit |
:wq | Save and quit |
Ctrl+w+v | Open vertical split |
Ctrl+w+s | Open horizontal split |
Frequently Asked Questions About Helix
Is Helix suitable as a daily driver?
Yes, for many developers it already is. Helix has strong support for all major languages through its LSP integration, solid Treesitter grammars for over 100 languages, and a reliable built-in file picker. Its primary limitation is the absence of a plugin system (as of 2026), meaning if you rely on highly customized Neovim plugins (e.g., a custom debugger UI or a specialized framework integration), you may still prefer Neovim for those projects.
Does Helix have a file tree (like NerdTree)?
Not natively. Helix’s philosophy prioritizes the fuzzy file picker (Space + f) over a static tree view. This is faster for most workflows since you can jump to any file by typing a few characters. If you require a tree view, you can run a terminal multiplexer (like tmux) alongside Helix and use a separate tree or broot command in an adjacent pane.
How do I exit Helix?
In Normal mode, type :q and press Enter to quit. If you have unsaved changes, Helix will warn you. Use :q! to force quit without saving, or :wq to save and quit. This is intentionally identical to Vim’s quit commands.
How does Helix compare to Neovim for beginners?
Helix has a significantly lower setup barrier. With Neovim, a beginner needs to choose a plugin manager, install 10–15 plugins, and write Lua configuration just to get LSP and syntax highlighting working. Helix provides all of that instantly. However, Neovim’s plugin ecosystem (especially with LazyVim or AstroNvim) is far more extensible and community-driven once you are comfortable.
Can I use Helix on Windows?
Yes. Helix is cross-platform and distributes pre-compiled binaries for Windows (.exe), macOS, and Linux. Download the Windows binary from the official GitHub releases page, extract it to a directory in your PATH, and run hx from PowerShell or Windows Terminal.
9. Conclusion: The Neovim Killer?
Calling anything a “Vim killer” is usually a recipe for disaster in the Linux community. However, Helix has undeniably struck a nerve.
By taking the brilliant selection-first, multi-cursor philosophy of Kakoune, pairing it with the raw, memory-safe speed of Rust, and pre-packaging it with the essential IDE features of LSP and Treesitter, Helix has created an editor that is incredibly difficult to ignore.
It frees developers from the endless cycle of managing plugin updates and fixing broken Lua scripts. It allows you to jump onto a brand new machine, download a single binary, and instantly have a world-class development environment. The comprehensive Space Menu ensures the editor remains discoverable even as you are still learning, bridging the gap between the power of modal editing and the approachability of GUI editors.
If you love the concept of keeping your hands on the home row, but you value your time too much to build an editor from scratch, Helix is the post-modern text editor you have been waiting for.
Want to explore more terminal editors? Check out our guide to Neovim for a deeper look at the fully extensible alternative, or browse our complete comparison of Linux CLI text editors to find your perfect match.



Discussion
Loading comments...