Screen Too Small

This course material requires a larger screen to properly display the terminal and editor interfaces.

Please use a tablet, laptop, or desktop computer for the best learning experience.

You can continue browsing, but the experience will be significantly limited.

The Vim DOJO

One text-editing puzzle a week. Transform the file in as few keystrokes as you can, beat the clock, and climb the leaderboard.

  • New every Wednesday · Drops at 10am ET

  • Fewest keystrokes · Precision beats speed

  • Keep your streak · Earn XP every week

Total participants
1,050 Vim enthusiasts
Challenges so far
25 challenges so far
Prize
XP & bragging rights

Join the Vim Challenge

Claim your spot on the leaderboard.

Already have an account? Sign in

Current Challenge

#25 Medium 200 XP

Scrub Logs and Relocate User ID

Redact PII, highlight the User ID, tidy up the log — all in Vim.

challenge.txt

Start

 1Bug: App crashed on launch
 2Timestamp: 2025-11-12 08:42:10
 3User: Alice Smith <alice@example.com>
 4User ID: 8472
 5Stack trace: NullPointerException at line 42

Goal

 1User ID: 8472
 2Bug: App crashed on launch
 3Timestamp: 2025-11-12 08:42:10
 4Stack trace: NullPointerException at line 42
Top score
98
Avg time
37s
Avg keys
32
Entries
273
Take the Challenge

Live since November 12

Upcoming Challenge

No upcoming challenges scheduled yet.

Past Challenges

Revisit past challenges and sharpen your keystrokes.

  • #24 Oct 29, 2025

    Fix the New Hire’s JavaScript‑y Methods

    Medium

    New dev left a trail of camelCase. Time to clean up their act—Ruby style.

  • #23 Oct 22, 2025

    From Debug to Deploy: Upgrade Logging Statements

    Hard

    Replace bad debug prints with real logger.info calls using a macro.

  • #22 Oct 8, 2025

    🧹 chore.rb Cleanup

    Hard

    Polish up this promising Ruby class and bring some cozy fall chores to life.

  • #21 Sep 10, 2025

    DHH Keynote Cleanup

    Medium

    Format memorable quotes from a messy Rails World 2025 transcript using Vim.

  • #20 Aug 28, 2025

    Tidy Up Those Git Conflicts

    Medium

    Collapse Git conflict blocks—and delete a 2022 ID hack.

  • #19 Aug 20, 2025

    Macro Cruise Control

    Hard

    Two-line entries, shuffled by day. Time for macro magic.

  • #18 Aug 13, 2025

    Comma Cleanup Crisis

    Medium

    30 lines of messy CSV. Can you clean them all efficiently?

  • #17 Aug 6, 2025

    Column Chaos Cleanup

    Medium

    Formatting meltdown. Visual block to the rescue

  • #16 Jul 23, 2025

    Mixed‑Indent Mayhem: Tabs → Two‑Space Salvation

    Easy

    A new dev just joined the team—and they’re on Team Tab. Our codebase is littered in parts with these rogue tabs that are just an eyesore for everyone. Convert every leading tab to two spaces!

  • #15 Jul 16, 2025

    Cleanup Sprint: Time to Bury the Deprecated

    Medium

    The best PRs are ones with net negative lines! Let’s finally delete the cruft we deprecated months ago—grab your Vim and let’s shred that technical debt!

  • #14 Jul 9, 2025

    Bug Hunt: The Search for 500

    Easy

    Your Rails logs are flooded with every request, but you only care about failed checkout calls (/api/checkout with status 500).

  • #13 Jun 25, 2025

    Honey, Who is JSON?

    Medium VimMacros

    You made a clean JSON schedule for the kids' summer activities. But your wife doesn't know how to parse JSON. I know, crazy right? Who doesn't know how to parse a little JSON? Either way, fix this so your wife can take the kids to their activities on time

  • #12 Jun 18, 2025

    Typecraft Course Checklist

    Medium VimMacros

    Typecraft is making courses now! But we're terrible at making lists. Help us make this list better, and make the best courses possible?

  • #11 Jun 13, 2025

    Parental Control: Exile 'Steve’s Lava Chicken'

    Easy

    The kids have hijacked our family playlist with endless loops of Steve’s “Lava Chicken.” Use Vim to delete every “Lava Chicken” entry—except one at the very end as a reward for enduring Mom’s chill jazz and Dad’s rock ballads.

  • #10 Jun 4, 2025

    Seasonal Scoop Filter & Sort

    Easy

    It’s summer, and you only want to feature seasonal ice-cream flavors on the website. Given a CSV of every flavor, filter out only those marked “Yes” under Seasonal, convert their names to UPPERCASE, and sort them alphabetically. Use Vim’s global commands and simple edits—no heavy regex magic needed.

  • #9 May 28, 2025

    The Great JSON Job Scrub

    Hard

    You’re preparing this data for a Very Serious Recruiter™ who only wants: - The names of people who are "looking" for jobs - No emojis - All job titles uppercased

  • #8 May 21, 2025

    Summer Schedule Sort & Bullet

    Medium

    The family’s summer plans are in chaos—a single semicolon-separated line of events out of order. Let’s split them into a bullet list and sort by date so Mom can stop yelling “Who planned August before July?!” before the road trip.

  • #7 May 14, 2025

    Espresso Extraction: Pulling Apart AI Parameters

    Easy

    During this morning’s caffeine-fueled Scrum, we declared: “Our AI calls must be as neat as a barista’s latte art.” Any call with multiple keyword args now gets its own line, wrapped in parentheses—no more parameter chaos!

  • #6 May 7, 2025

    Feed, Change, Edit: Mastering Baby Logs in Vim

    Easy

    Typecraft's baby log has been mostly well-kept… until a sleep-deprived 3AM entry and a couple voice-to-text dictations gone wrong. Now the pediatrician’s email parser is rejecting the log due to "inconsistent formatting." Your task is to clean it up and convert it into CSV.

  • #5 Apr 30, 2025

    Shell Shocked: Fixing Your Wandering Git Aliases

    Easy

    You (or an overeager teammate) dumped your Git aliases into ~/.zshrc without the proper alias prefix or surrounding single quotes. Before your shell breaks, let’s correct the syntax.

  • #4 Apr 23, 2025

    Baby Announcement!

    Easy

    Sleep-deprived Chris, fueled by coffee and newborn cries, dumped the baby’s details into one chaotic line. Rescue his zombie-scribble and turn it into a proud, multi-line bullet list.

  • #3 Apr 16, 2025

    Ship It or Sink: The Dev vs. Prod Toggle Script

    Easy

    Release imminent! Boss 'Captain Deadline' yells: 'SHIP IT OR WE SINK!' You have one bash script with markers: #DEV_ONLY and #PROD_ONLY. Rules: - #DEV_ONLY → comment out (add leading #). - #PROD_ONLY → uncomment (remove leading #). - Both → Prod wins (line stays active). Fix it in five minutes or suffer a 200-slide Lunch 'n Learn on our release process.

  • #2 Apr 9, 2025

    HR Escalation — The Bash Guy Situation

    Medium

    Wrap text at 40 characters and clean up this internal HR email before it’s forwarded to the CTO.

  • #1 Apr 2, 2025

    Clean Up the Log File Challenge

    Easy TEXT_MANIPULATION

    Make your boss happy by cleaning up the log file. He's watching! 👀