| name | hx |
| description | Use Helix (hx) modal editor — selection-first editing with tree-sitter textobjects. Use when configuring keybindings, setting up language servers, or customizing themes. |
| token_cost | 140 |
| related | ["vscode"] |
| keywords | ["helix","hx","modal","keybinding","theme"] |
Helix
Modal text editor with selection-first editing and tree-sitter integration. The model is simple: select text first, then act on it (delete, yank, change). Supports multiple simultaneous selections.
Modes & Navigation
- Normal: navigation and editing —
i inserts before selection, v enters select mode
- Insert: typing mode —
jk or Escape returns to Normal
- Select/extend: making multi-cursor selections
Key commands in Normal mode:
/ search forward, n/N next/previous match
gd go to definition, ]d/[d next/previous diagnostic
Space opens Space mode (pickers, LSP actions)
ma/mi select around/inside textobjects (tree-sitter aware)
Space Mode (LSP & Pickers)
Accessed via Space in Normal mode:
f file picker, b buffer picker, s document symbols
d diagnostics, a code action, r rename, k hover docs
/ global search
Configuration
Config lives in ~/.config/helix/config.toml (global) or .helix/config.toml (project-local).
theme = "onedark"
[editor]
line-number = "relative"
mouse = false
auto-format = true
[keys.normal]
C-s = ":w"
g = { a = "code_action" }
[keys.insert.j]
k = "normal_mode"
Language Servers
Configure in languages.toml:
[[language]]
name = "rust"
language-servers = [{ name = "rust-analyzer", except-features = ["format"] }, "taplo"]
Shell Integration
Pipe selection through external commands or insert command output:
| pipe selection through a command
! insert command output before selection
:pipe typable command for piping
Key Constraints
- Selection-first editing — you must select text before acting on it
- Tree-sitter provides syntax-aware textobjects and navigation
- Project-local config merges with global config