hmemcpy / hmemcpy/toolkata

Tutorial: Helix for Vim users (helix-vim pairing)

Open
#6 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

## Summary

Add a new tutorial pairing: **Learn Helix if you know Vim**.

## Motivation

Helix is a post-modern modal text editor built in Rust. It takes Vim's modal editing but fundamentally changes the interaction model: selection-first (Kakoune-style) instead of cursor-first. Tree-sitter and LSP are first-class, no plugin configuration needed.

**Why this works:**
- Familiar modal editing foundation
- Paradigm shift: cursor-first → selection-first
- Rust ecosystem alignment
- "Batteries included" philosophy (no plugin hell)

## Proposed Structure (~12 steps, ~50 min)

| Step | Concept | Vim → Helix |
|------|---------|-------------|
| 1 | Install Helix | `brew install helix` or `cargo install helix-term` |
| 2 | Modal basics | `i`, `Esc`, `:q` — familiar ground |
| 3 | **Selection-first editing** | `wd` selects word then deletes (vs `dw` deletes word) |
| 4 | **Multi-cursor built-in** | `s` to select, `C` to split selection on matches |
| 5 | Tree-sitter motions | `mf` (function), `mc` (class) — semantic navigation |
| 6 | LSP integration | `space-a` (code actions), `space-r` (rename) — no config needed |
| 7 | **No plugin configuration** | Everything built-in: fuzzy finder, file picker, git blame |
| 8 | Surround made easy | `ms(` to add surround, `mr(` to replace — consistent syntax |
| 9 | Registers and yank history | `space-y` for yank picker |
| 10 | Jump list navigation | `C-o`, `C-i` — familiar, but with preview |
| 11 | Configuring Helix | `~/.config/helix/config.toml` — minimal, declarative |
| 12 | When to use Helix vs Vim/Neovim | Philosophy differences, trade-offs |

## Key Comparison Points

| Vim concept | Helix equivalent | Paradigm difference |
|-------------|------------------|---------------------|
| `dw` (delete word) | `wd` (select word, then delete) | Selection precedes action |
| `ciw` (change inner word) | `vic` (select inner word, then change) | Composable, not memorized |
| `/pattern` + `n` + `cw` | `/pattern` + `s` + `c` | Select all matches, change simultaneously |
| Plugins for LSP, fuzzy find | Built-in | Convention over configuration |
| `vimrc` with 500 lines | ~20 line `config.toml` | Sensible defaults |
| Macro recording | Same (`q`) + select-repeat | Works with multi-cursor |

## Pedagogical Notes

**The "aha" moment:** Making a change across multiple matches with `s` (split selection) + `c` (change) — no regex substitution needed, visual and immediate.

**The paradigm shift:** Vim is "verb then object" (`delete word`). Helix is "object then verb" (`word delete`). More consistent, easier to learn, enables multi-cursor naturally.

**Key insight:** Helix trades customizability for out-of-box productivity. If you've spent weeks configuring Neovim, Helix feels limiting. If you want to start coding immediately, Helix is liberating.

## Resources

- https://helix-editor.com/
- https://docs.helix-editor.com/
- https://github.com/helix-editor/helix
- Kakoune editor (Helix's spiritual predecessor): https://kakoune.org/

## Category

`Editors`

## Notability

- Post-neovim editor discussion
- Rust ecosystem darling
- Selection-first editing paradigm (Kakoune-style)
- "Zero config" philosophy appeals to users tired of plugin management

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.