NoRaincheck

Moving to Helix

Helix (hx) is a modern modal editor built in Rust. Unlike Vim/Neovim, Helix ships with a built-in LSP client, tree-sitter integration, and multiple cursor support out of the box — no plugins required.

Why Helix over Vim/Neovim?

Key Differences from Vim

ConceptVim / NeovimHelix
Normal modemotions act immediatelymotions extend the selection
Insert modei to enteri enters insert (same)
Select then actd2w (delete 2 words)2w extends selection, d deletes it
File explorerRequires pluginBuilt-in <space>f or :open
LSPPlugin requiredBuilt-in, auto-configured
ConfigLua / Vimscript~/.config/helix/config.toml
Language configPer-plugin setup~/.config/helix/languages.toml

Getting Started

1# macOS
2brew install helix
3
4# Arch
5sudo pacman -S helix
6
7# or build from source
8git clone https://github.com/helix-editor/helix
9cargo install --path helix-term

Configuration

Helix uses toml for everything. See the official config docs.

Example ~/.config/helix/config.toml:

 1theme = "catppuccin_macchiato"
 2
 3[editor]
 4line-number = "relative"
 5cursorline = true
 6color-modes = true
 7end-of-line-diagnostics = "hint"
 8
 9[editor.cursor-shape]
10insert = "bar"
11normal = "block"
12select = "underline"
13
14[editor.indent-guides]
15render = true
16
17[editor.inline-diagnostics]
18cursor-line = "warning"
19other-lines = "warning"
20
21[editor.lsp]
22display-messages = true

Language Configuration

Language servers, formatters, and tree-sitter grammars are configured in ~/.config/helix/languages.toml. See the language config docs.

 1
 2[language-server.ty]
 3command = "uvx"
 4args = ["--from", "ty", "ty", "server"]
 5
 6[[language]]
 7name = "python"
 8language-servers = ["ty"]
 9
10[language-server.rust-analyzer]
11command = "rust-analyzer"
12
13[[language]]
14name = "rust"
15language-servers = ["rust-analyzer"]
16auto-format = true

Key Mappings

Helix’s default keymap is well thought-out. See the official keymap docs.

Notable differences from Vim:

Switching from Vim

The biggest mental shift is selection-first editing. In Vim, you press d2w — a command followed by a motion. In Helix, you press 2w to extend the selection to the second word boundary, then d to delete the selection.

This means dd (delete line) becomes xd (extend to full line, then delete).

Vim muscle memory refresher:

ActionVimHelix
Delete lineddxd
Delete 2 wordsd2w2wd
Yank lineyyxy
Change inside bracketsci(mi(d
Comment togglegc (with plugin)gc (built-in)
Format filegg=G (with plugin):fmt
Find filesRequires plugin<space>f
LSP goto defgd (with plugin)<space>gd
LSP renamegrn (with plugin)<space>r

Other things

Official Resources