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]

29697 active golfers, 358939 entries, 499 challenges

Open VimGolf challenges

Subtraction - 155 entries

Solve the equations.

Round Round - 242 entries

Round Round

Inner hyphens - 115 entries

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

Sort the cardinal numbers - 234 entries

Maybe a simple challenge.

increment by column in XML - 143 entries

modify an arbitrary "column" in an xml table by incrementing a an arbitrary placeholder string

Change name of a variable - 153 entries

Replace the name of the $variable with the fastest move possible. The challenge is having a command that allow you to easily change the variable name even if its indented.

citizen_hacks_2019_challenge1 - 29 entries

For the Citizen Hacks 2019 Vim competition

Python to Ruby - 188 entries

Convert this Python code to Ruby. NOTE: This program likely won't run.

Recursively Palindrome - 222 entries

Note that there are 2^6-1 characters.

On Being Stylish - 51 entries

Your PR cannot be accepted if you don't follow our corporate style guide.

Interleave lines - 127 entries

This is some kind of « paste -d'\n' c b a ». There are many ways to achieve this.. just find the shortest!

Java Array2List - 216 entries

Convert an java array initializer into a list.

Cleanining up 80 column concatenated text - 185 entries

1. Put the whole query on one line, remove the concatenation operators 2. Remove the double spaces that appear a few times in the query 3. Use string-interpolated variable statementPid rather than the ugly concatenation

Rule 110 - 32 entries

Compute the next 5 iterations of Rule 110 with the given starting state. https://en.wikipedia.org/wiki/Rule_110

Sorting a glossary - 103 entries

Sort a glossary. Glossary head contains a header phrase ending with ':' and glossary body has multi line text indented with a tab.

simple format (3) - 43 entries

reverse two column values!

Pretty format for variable declarations - 129 entries

Project standards demand the equal signs must be aligned for better readability.

Generate Fibonacci Numbers - 211 entries

Use your super vim powers to generate Fibonacci Numbers.

Parsing with CSV: Unify lines and result. - 163 entries

col1;col2;col3;col4 A;1;4;5 A;3;4; A;1;4; # New output: col1;col2;col3;col4 A;1(2x);3;4(3x);5 any ideas?

Cartesian product - 206 entries

{1,2,3,4,5} X {1,2,3,4,5}

Another Mixed-Up Haiku - 206 entries

VimGolf ... a perfect evening?

Shuffle and Sort - 172 entries

The values where sorted incorrectly. Get them back to how they are supposed to be

Refactor arguments into object argument - 159 entries

A relatively common Javascript refactoring.

snowflake fractal - 36 entries

From step 0 to step 3 of a fractal

It'ss tooo coold too typpe todaay - 199 entries

My hands are numb with cold. It's hard to type correctly.

Block Fun 1 - 160 entries

Manipulate the columns to produce desired result.

NBCU Weekly Challenge - #0 - 124 entries

One of our favorites lines here at NBCU! p.s. The first version of #0 was deleted due to me copy/pasting a HTML entity. Congrats to the one who figured that out, you are a true ninja warrior!

Assign list - 146 entries

Assign list elements to matrix

Complete the hex array data - 188 entries

Do not use external tools(e.g. tac, seq) [My interpretation of Rule #7]

Fun With The Diagonal - 91 entries

change the lowercase characters on the main diagonal to uppercase

Multiplication table. - 183 entries

Create a multiplication table.

Extract HTML option values from tag values - 74 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.

Unwrap the text of an email message - 154 entries

Reverse of "Wrap the text of an email message to 79 characters". gq and gw are great for wrapping paragraphs. But sometimes other programs choke on your wrapped lines. What's the best way to un-gq?

PHP <--> Java class conversion Part 1 - 179 entries

Convert this tiny php class to adequate java one.

Turn this csv list into queries - 190 entries

Transform each line of this csv file into a MySQL-ready INSERT query.

Getters & Setters: Java - 189 entries

Boilerplate getters & setters - it's a tedious fact of life in Java, and probably the only thing that still pulls me back to an IDE. Perhaps someone knows a fast, pure vim way...

Aligning function arguments to match a specific coding style - 160 entries

Most projects have specific coding style guidelines. In this case, the argument list must be broken into a new line for each argument, with the argument names right aligned, taking into account pointers.

Test everything! - 113 entries

... and build the desired input data structure. Transform a list of values into a non-trivial format.

Dehamlizing - 156 entries

Change this piece of HAML code back into erb

Manual SQL - 95 entries

Change select and insert queries to simulate inserting a new record.

create arrows in a list - 65 entries

Add arrow at same distance

Create a pandoc compatible table - 158 entries

In [this vimcast][1], a featured gist from Tim Pope shows how to quickly make a simple table structure. How fast can you convert it to pandoc's markdown style? [1]: http://vimcasts.org/episodes/aligning-text-with-tabular-vim/

constructor - 165 entries

coding a constructor for a simple class

formatted text to markdown - 175 entries

You're converting some posts from an old blog to markdown. The formatted text is far closer to the finished product than the html markup, so it seems like a good place to start. Word wrapping seems to be the main area for optimization.

Piphilology - 123 entries

Piphilology comprises the creation and use of mnemonic techniques to remember a span of digits of the mathematical constant π. http://en.wikipedia.org/wiki/Piphilology

Separating firstname & lastname - 107 entries

Seperate named with equal tabs.

Inconsistent real estate paste - 152 entries

Format a hand-typed real estate listing that uses inconsistent punctuation into four sections

Winning streak - 105 entries

Make the number on each line equal the consecutive L's or W's.

citizen_hacks_2019_challenge3 - 22 entries

For the Citizen Hacks 2019 Vim competition.

swap or reverse - 98 entries

Try to swap or reverse the line as needed.

VimGolf Chatter