Real Vim ninjas count every keystroke - do you?

Pick a challenge, fire up Vim, and show us what you got.

Changelog, Rules & FAQ, updates: @vimgolf, RSS.

Your VimGolf key: please sign in

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put [challenge ID]

22918 active golfers, 242005 entries, 397 challenges

Open VimGolf challenges

Split the words - 311 entries

Add the spaces manually if you must, but if you use Vim's spell checking feature wisely, I think you'll save a LARGE number of strokes.

Sort files from hosts - 122 entries

Resume files by host. I hope you enjoy with this challenge

Delete unwanted lines - 326 entries

Delete all lines which does not end in "o.."

Counting in binary - 323 entries

"a" represents 0; "A" represents 1. Start from zero and count to 15.

Wrap the text of an email message to 79 characters - 473 entries

You're replying to an email with silly long lines. Clean them up.

Increment, increment, increment.... - 466 entries

Vim likes macros

Stairs Indenting - 357 entries

Indent each line with <line number> whitespaces.

Reformat a C golf submission - 464 entries

Take this C golf submission (for the "tiny but standards-compliant Hello World program" category, naturally), and turn it into formatted C code.

Pairs of numbers - 316 entries

Line 1 represents x, line 2 y-data. Bring the corresponding pairs in the form "[x,y]\n"

Replacing some words - 402 entries

How fast could it be?

A simple change - 350 entries

Just change the numbers in the most efficient way ...

PHP Array Syntax -> MailChimp Merge Syntax - 407 entries

I recently needed to send an e-mail to our marketing department listing allowed merge tags for our MailChimp campaigns. The allowed merge tags were determined from a PHP array in one of our PHP classes. I transformed the PHP class to MailChimp's syntax and sent the e-mail. It was, however, a long, laborious process. I'm still fairly new to Vim and would love to see how an expert Vim user would tackle one of my own, real-world problems. Thanks and have fun!

Context insensitive completion 0 - 440 entries

Buried in the lines you're not supposed to add is the line "Add this line!" Add that line to the top of the file.

Add fold markers to a .c file - 439 entries

Fold markers can make it easier to navigate source code. Add them to this .c file.

Sorting paragraphs - 437 entries

Order the paragraphs correctly, per prefixed index

Going underground.... - 277 entries

Simple reformatting: in this case changing from the format London underground supplies its customers with, to the format that Google Calendar likes...

Mirrored text - 149 entries

backward and forward, and long enough to be challenging

Shuffled numbers - 195 entries

Each number is paired with the number it should follow. That's enough information to put them in order.

Start coding format - 114 entries

I used to start coding with following format: int main(){ -(cursor here) }

vim1001 - 221 entries

change number 1001 into a "vim1001 sequence". (My first challenge, hope it is not too bad... )

Line Zipper - 388 entries

Zip/pair related lines.

Indentation - 406 entries

Indent each line according to the right number of spaces it needs.

The Quick Brown Fox Jumps Over The Lazy Vim - 318 entries

Someone has vandalized this text file and replaced the beginning character of one word in each line with a Big "X." Please remove the big X's, and fix each line to read "The Quick Brown Fox Jumps Over The Lazy Dog."

you're stuck on jQuery < 1.7 - 314 entries

replace calls to jQuery 1.7+'s `on` with calls to pre 1.7 `bind`

FoodCritic023: Prefer conditional attributes - 150 entries

FoodCritic (www.foodcritic.io) is a lint tool for your Chef (learn.chef.io) cookbooks. FC023 indicates that you should prefer Chef guards over Ruby conditions. This challenge expects you to be able to fix this issue in a sample cookbook, given the FoodCritic output: ================================================================ FC023: Prefer conditional attributes: cookbooks/foo/recipes/default.rb:25 ================================================================ See http://www.foodcritic.io/#FC023 for more details about the changes being made.

Case preserving word replacement - 383 entries

Half way through my project, my people turned into dogs. Now I have to change everything in my source.

NBCU Weekly Challenge - Test - 214 entries

Just testing.

Generate English Alphabets - 389 entries

Start with a, get up to z.

underscore_to_camelCase - 134 entries

Pointy haired boss decided we need to switch to camelCase. Let's get this over with.

Context Insensitive completion 1 - 387 entries

Finish writing this simple Python HTTP server.

Sorting database text output - 183 entries

Sometimes it is nice to be able to quickly take column-formatted text output from the SQL command line and turn it into a list of useful data. In this case we want a unique, sorted list of the values from the second column combined into one comma-separated list. What is the fewest strokes you can do this in?

Reverse and count - 378 entries

Someone typed things upside down and now a Vim ninja needs to reverse the lines and count how many there are.

Insert a Markdown link - 377 entries

Put a link in a markdown document, using the after-the-paragraph format.

JS notation to Immutable.js notation - 137 entries

Now Immutable.js made its way into many frontends. This challenge consists of a typical refactoring that many of us are facing now.

A grid of punctuation - 110 entries

Create a checkerboard of = and - in an 80×24 grid!

Vim's not included features - 150 entries

Filter not included (-) features in a hypothetical installation of vim.

Hatsuyume - 360 entries

http://en.wikipedia.org/wiki/Hatsuyume

Array of characters - 107 entries

We all copy paste things off the internet, but the syntax doesn't look right. Fix it as fast as possible.

Change attribute to getter - 84 entries

Wrap attributes with a getter method.

Rotating Philosophers Problem - 346 entries

Can you help the philosophers find a good place to sit before they get five forks and spaghetti?

Restore order to the alphabet - 149 entries

The numbers are OK. The letters are wonky.

learn vim in short time - 175 entries

so happy to learn vim.because vim is awesome

Neither Fizz nor Buzz - 187 entries

Not your regular increment macro! The gaps are tricky.

Sort the VimGolf challenges by popularity - 241 entries

"Sort by popularity" is a good order to play the challenges. Not perfect, but you could do a lot worse. ;) Input is a sample copy-pasted from vimgolf.com. Some of the challenge names have digits that will get in your way, so read ":help :sort" for hints on sorting with a regex. When you're done, try your solution on the full list!

Refactor static member invocation - 174 entries

Someone used a static method. Refactor the method into a static import while fixing the assertion.

create arrows in a list - 62 entries

Add arrow at same distance

Sort entries based on date - 292 entries

Sort some entries in a Ledger-file based on date.

Inner hyphens - 110 entries

Yet another hyphen challenge. Adding 5 hyphens to a file shouldn't be too hard.

Free hyphen! - 109 entries

Just like "Inner hyphens", but I'm giving you a free hyphen to play with. Will your solution be any different?

Table Reshuffle - 314 entries

Fix the column order in this table... also append the new 'username' column.

VimGolf Chatter