VimKata: a browser game that punishes you for every unnecessary keystroke
Been using Vim for about a year and kept thinking "the only real practice is doing it live." So I built something.
VimKata each level shows you a code snippet and a target state. Transform it using Vim commands in the browser. You get scored.
The formula:
score = floor(1000 × efficiency × time_factor × undo_penalty)
efficiency = min(1.0, optimal_keystrokes / your_keystrokes)
time_factor = max(0.5, 1.0 - elapsed_seconds / (par_seconds × 2))
undo_penalty = max(0.8, 1.0 - undo_count × 0.05)
Keystroke count is the dominant factor. You can brute force your way to a correct answer with 40 keys and get 3/10 efficiency, or learn ciw and walk away with 960 points.
30 levels. Basics (x, dw, dd) through text objects (ci", di[, cit), visual block, dot repeat, and count prefixes. Wrong answers show a character-level diff. Correct answers reveal the optimal solution and a replay of every key you pressed.
Daily challenge + leaderboard for signed-in users. Anonymous play always works, no account needed.
Stack: CodeMirror + the vim plugin, SvelteKit, Go + Echo, DynamoDB, Lambda.
Disclaimer: I built this. If you have feedback, feel free to reach out. Always looking to improve it.