Terminal-based text editing has long been dominated by Vim and Neovim, where mastering modal editing usually requires installing external plugin managers, configuring complex Language Server Protocol (LSP) integrations, and troubleshooting configuration syntax. Helix is a modern, post-modern modal text editor written entirely in Rust that reimagines this workflow. Inspired by Kakoune and Neovim, Helix delivers zero-configuration Language Server Protocol support, Tree-sitter syntax highlighting, multiple selections, and a selection-first modal editing paradigm straight out of the box.
What Sets Helix Apart from Traditional Terminal Editors?
While Vim follows an “action-object” mental model (where typing dw deletes a word before you visually confirm the selection), Helix reverses this workflow into a “selection-action” model. In Helix, you always select the text first, observe the visual highlight directly on your canvas, and then apply the desired transformation command (such as delete, change, or format).
Furthermore, Helix requires zero initial setup for modern programming languages. If a language server binary (such as rust-analyzer, gopls, pyright, or typescript-language-server) is present in your system path, Helix automatically hooks into it to provide autocompletion, hover documentation, diagnostic linters, and code formatting without editing a single configuration line.
How to Install Helix on Linux
Helix is packaged across major distributions and can also be installed via standalone binaries or package managers.
Method 1: Installing via Native Package Managers
On modern Ubuntu and Debian distributions, install the official community package or PPA:
sudo add-apt-repository ppa:maveonair/helix-editor
sudo apt update
sudo apt install helix
On Fedora and CentOS Stream:
sudo dnf install helix
On Arch Linux:
sudo pacman -S helix
Method 2: Installing via AppImage or Standalone Binary
If you prefer an isolated single-binary installation:
curl -fsSL https://github.com/helix-editor/helix/releases/latest/download/helix-v24.07-x86_64-linux.tar.xz -o helix.tar.xz
tar -xf helix.tar.xz
cd helix-*
sudo cp hx /usr/local/bin/
sudo cp -r runtime /usr/local/lib/helix-runtime
Verify that Helix is ready by checking installed health diagnostics:
hx --health
This diagnostic command displays a full status table showing which language servers, debuggers, and Tree-sitter grammars are detected on your system.
Core Navigation and Selection-First Editing
Launch the editor from your terminal by running hx followed by a file name:
hx main.py
Helix operates with three primary modes: Normal mode, Insert mode, and Select mode.
Moving and Selecting
In Normal mode, movement keys automatically extend selections:
- h, j, k, l: Move the cursor left, down, up, and right.
- w: Select forward to the beginning of the next word.
- e: Select forward to the end of the current word.
- b: Select backward to the beginning of the previous word.
- x: Select the entire current line. Pressing x repeatedly selects subsequent lines downwards.
- d: Delete (cut) the currently selected text into the clipboard register.
- c: Change the selection (deletes highlighted text and drops into Insert mode).
- y: Yank (copy) the selected text into the register.
- p: Paste the yanked text after the cursor.
- u and U: Undo and redo your latest modifications.
Entering and Exiting Insert Mode
- i: Enter Insert mode immediately before the current selection.
- a: Enter Insert mode immediately after the current selection.
- o: Open a new line below and enter Insert mode.
- O: Open a new line above and enter Insert mode.
- Esc: Return to Normal mode.
Multiple Selections and Refactoring
Multiple cursors are a first-class citizen in Helix. To rename multiple occurrences of a variable across a block of code:
- Use x to select the lines containing the variable.
- Press s to invoke the regex selection prompt.
- Type the exact variable name (such as
total_amount) and press Enter. - Helix places an independent active cursor on every match inside the selected range.
- Press c to delete all selected names simultaneously and type your replacement identifier.
- Press Esc to return to Normal mode. Press , (comma) to collapse multiple cursors back to a single primary cursor.
Language Server Protocol Features (LSP) Out of the Box
Helix provides built-in shortcuts to harness language intelligence:
- Space + f: Open a fuzzy file picker across your project workspace.
- Space + b: Browse open file buffers.
- Space + k: Display hover documentation for the function or symbol under the cursor.
- gd: Jump directly to the definition of the active symbol.
- gy: Jump to the type definition.
- Space + r: Trigger symbol rename across the entire codebase via LSP.
- Space + a: Open code actions and quick fixes suggested by the compiler.
- [d and ]d: Jump between compiler diagnostics, warnings, and errors.
Customising Helix Configuration and Themes
Helix uses a single TOML configuration file located at ~/.config/helix/config.toml.
Create and edit your configuration:
mkdir -p ~/.config/helix
nano ~/.config/helix/config.toml
Add common ergonomics preferences:
theme = "catppuccin_mocha"
[editor]
line-number = "relative"
cursorline = true
mouse = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
Save the file. Helix automatically hot-reloads themes and configuration changes without restarting the active editor instance.
Frequently Asked Questions
How do I save and quit in Helix?
Like Vim, command mode is triggered with a colon. Type :w to save, :q to quit, or :wq to write and exit. You can also run :q! to discard unsaved changes.
Can I install plugins in Helix?
Helix does not feature an external plugin manager by design. Core capabilities including LSP, Tree-sitter, Git diff gutters, fuzzy finders, and debug adapters are built natively into the core Rust binary for stability and performance.
How does Helix compare to Neovim?
Neovim is an extensible platform that relies on user-curated Lua plugins for modern features. Helix delivers a complete IDE-grade modal editing environment immediately upon installation with zero configuration overhead.