finds.dev← search

// the find

S-Sigdel/vimhjkl

★ 543 · Python · MIT · updated Jul 2026

learn vim from your terminal with spaced repetition

A spaced-repetition trainer for vim techniques that runs real vim/nvim as a subprocess and grades your actual keystrokes against a verified par, rather than quizzing you in a fake terminal emulator. Aimed at people who've done vimtutor and know the basics but want operator+motion grammar, registers, macros, and :g/:normal drilled into muscle memory with a real scheduler behind it.

It drives real vim with `vim -W` and replays/scores your actual keystrokes, so you're graded on genuine vim semantics instead of a JS reimplementation that quietly diverges from real behavior. The curriculum is machine-verified: `build.generate` runs every challenge against actual vim and refuses to write `skills.json` if a challenge doesn't verify, so you're not trusting hand-written pars that might be wrong. Scheduling is a real Leitner box (1-5) plus a rep counter to 25 before a skill moves to maintenance, not just a binary pass/fail checkbox. Drills run on `vim -u NONE`, so your personal vimrc, plugins, and autocmds can't quietly inflate or sabotage your grading.

Install paths are Homebrew/AUR/source only — no Windows story at all, which is a real gap given how many devs use vim through WSL or gVim on Windows and will hit `vim -W` subprocess quirks nobody's documented. The curriculum pipeline includes `llm_augment.py` generating challenge content, and the only stated safety net is that it round-trips through real vim — that catches syntactically broken challenges but not a pedagogically bad or misleading one since the LLM step isn't discussed beyond its existence. There's a CI workflow but no coverage numbers or badge, so from the README alone you can't tell how much of `grader.py`'s keystroke-matching logic (the part most likely to have edge-case bugs) is actually exercised by `test_grader.py`. At 543 stars with one listed contributor model built around curriculum data rather than engine changes, anyone hitting an actual grading/engine bug is dependent on a single maintainer to fix core scoring logic, not just add content.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →