// the find
S-Sigdel/vimhjkl
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.