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]

37755 active golfers, 449222 entries, 569 challenges

Open VimGolf challenges

Interactive git rebase changing commands - 161 entries

How to change the action of some commits in git rebase dialog.

multiple cursor alternative - 1474 entries


Flatten repo - 23 entries

For each git repository (<project> tag) translate name attribute to flatten directory structure. Add path attribute if missing (because checkout hierarchy must be kept). #xml

Palindrome numbers - 25 entries

For each number compute its associated palindrome. First number (first line) has been eaten! #prime

Un"finnish"ed Work - 112 entries

Replace å by a, ä by a and ö by o.

Hello ${world} - 299 entries

Migrate a JavaScript String from concatenation to ES6 interpolation.

Array transposition - 2387 entries

Transpose two arrays into one.

Create a table - 331 entries

Convert the given input into a formatted table

Todo list specification - 385 entries

The every item on the todo list must be done today. Modify the list to reflect that.

Separate the lines - 175 entries

Every other line is mixed up. Separate them into their original texts.

Add Go XML to structure tags - 152 entries

The Go programming language can directly map XML to structure fields. Add the correct XML tag after each field.

Hidden Message - 77 entries

Find the hidden message and replace all other characters with spaces.

Missing Library and a Typo - 856 entries

I forgot to add a c library, please add it for me. Also I'm bad at typing so fix my typo too.

Text to HTML Table - 171 entries

Turn the plain text table to an HTML table.

Simple addition - 310 entries

The right side of the equation is already there. We just need the left one now.

For all cases. - 141 entries

In this case... change it! :) Watch the line.

From argument to object - 1475 entries

This task typifies those programmers endure while coding. This C-family pseudocode needs a function argument to be repurposed as an object call. Simply search and replace? Repeat a pattern of edits?

create arrows in a list - 106 entries

Add arrow at same distance

Stairstep digits - 381 entries

Remove the evens. Double the odds.

comment and uncomment code inline - 1071 entries

It's very useful to be able to comment out a block of code in a quick edit. And likewise to uncomment the code. This operation often involves multi-line stanzas and even large blocks. With just line-wise navigation and insert mode this would cost you about 4 keystrokes per line. Master this hole of VimGolf and you'll quickly drop your key count in day to day Vim as well.

Adam's challenge - 957 entries

Change both normal to bold and 4 by 2. Adam Wathan challenge this on twitter . He did it in 11 keystrokes on Sublime.

Nesting SASS - 261 entries

Move a block inside another block and indent it

Format java properties - 72 entries

Format java properties to a different format. The value which is the string following the first '=' cannot & should not change. All periods in the key get replaced with an underscore "_" and get a prefix of "b_".

Fiddle percentages into real numbers - 840 entries

Get rid of the '%' symbols and shift the decimal place. This is the easier version - all the columns line up.

Extract HTML option values from tag values - 98 entries

Generate HTML option values from the text in the option tag. If the text contains multiple words, replace the spaces with an underscore and convert all capital letters to small letters.

Turn a ninja to case-insensitive [Nn][Ii][Nn][Jj][Aa] regexp! - 63 entries

I bumped into this in a dailywtf code: I didn't want to translate a string whenever I wanted to be [Ss][Aa][Rr][Cc][Aa][Ss][Tt][Ii][Cc] on slack, so I figured a script (python, sed, whatever) would be helpful. Well, or a few vim keystroke!

Combines all items - 305 entries

For each line that starts with the same number I want to combine its contents

Change attribute to getter - 133 entries

Wrap attributes with a getter method.

replace 2nd column blanks with values in same column if blank - 231 entries

Where ,SOMELOGB and ,SOMELOGC replaces each /r carriage return if 2nd column is blank. The replace only happens if 2nd column is blank though and should replace up to the non blank row.

Double and switch - 37 entries

Aaaanother case switcher

Sort files from hosts - 179 entries

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

Order and join - 960 entries

There's something special about the input order.

Start coding format - 147 entries

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

7th Birthday - 186 entries

We have a bunch of numbers written from 0 to 9 in the order present in the text input file. The task is to create 7 by replacing the numbers with dashes.

Every other line - 2894 entries


Paragraph breaks - 505 entries

Swap the blank lines and the aaa lines.

C Reformatting - 688 entries

You may use Visual mode... or not. #uppercase

Pretty multi-line bash - 218 entries

Bash line continuations are much prettier when they're column aligned.

ascii-art diamond - 35 entries

Simple ascii-art diamond. The grid is 40x40.

Generate a list of numbers - 283 entries

Please generate list of numbers from 1 to 20.

A grid of punctuation - 124 entries

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

Array of characters - 153 entries

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

Paragraph sort - 430 entries

My large herbivorous mammals, Vim commands, and POSIX utilities need to be sorted separately.

Wrap text in quotes - 349 entries

All the blocks of text should be wrapped in quotation marks.

Copy three lines - 2863 entries

If the site is up (by some miracle), make the text under every header identical.

Split line with dots - 2127 entries

This line is too long, split it.

Align commas - 1049 entries

There are 15,000 aligning challenges on, and they're all exactly the same. I hope this one is a little different.

From A to B - 564 entries

Mirror and change this text block

SQL to YAML - 45 entries

Should be easy with vim, or not?

One number per line - 18635 entries

Just give me the numbers.

VimGolf Chatter