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]

30876 active golfers, 373246 entries, 515 challenges

Open VimGolf challenges

ASCII Art - 80 entries

how good are you with simple regex?

Fun With The Diagonal - 96 entries

change the lowercase characters on the main diagonal to uppercase

Free hyphen! - 139 entries

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

Inner hyphens - 118 entries

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

Swap values - 4374 entries

Well, swap the values...

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.

Alsa configuration - 478 entries

I'm tweaking my ~/.asoundrc file!

JS notation to Immutable.js notation - 151 entries

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

Create bison tokens - 34 entries

Create tokens for bison out of a known list of words

FoodCritic023: Prefer conditional attributes - 166 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.

Replace and keep the case - 389 entries

Replace all instance of plugin and Plugin to device and Device.

comments galore - 945 entries

Basic comment reformatting

No naked if allowed! - 26 entries

House style forbids naked condition statements, comments should start with a space character and be on their own line. Good luck!

lipsum lines - 245 entries

Convert a quoted block of text into strings in a list.

Angular naming conventions - 279 entries

In angular, a directive name follows the camelCase convention. When the directive is used in an HTML template, the words are instead separated by a dash. Go from to the other the fastest!

Manual SQL - 114 entries

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

Forgot to follow the naming convention... - 25 entries

Rename everything like MY_VAR_SOMETHING to MyVarSomething.

Sudoku table - 58 entries

Make this simple sudoku table look nice and legible.

Lower cased and dashed strings - 46 entries

As I have to generate big fixtures files, I wanted to find a way to format input data the way described by start and end files. Especially the lower-cased-and-dashed ids Not so good to find a pure Vim way, that's why I submit this challenge ;)

Vim's not included features - 168 entries

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

Assign numbers to fields - 90 entries

You are given a list of space-separated strings. Add an increasing numeric prefix to each one.

Add to end of each line... kinda - 285 entries

Visual-block mode can be used to add something to the end of each line, even if they are of differing lengths. However, what if it's not quite at the end?

Vice versa - 7386 entries

Little role switching.

Maze path - 32 entries

Follow the given motions and mark your path with Xs. Attention: This maze is quite big (20x20), please set your terminal size to at least 82.

Simple, Practical, and Common - 32690 entries

Simple things we do all the time should be able to be done with very few keystrokes, but sometimes I find something I need to do makes me go, "There MUST be a better way." This challenge is just a simple movement and entering text at a certain place.

Make HTML List - 982 entries

Turn the comma separated list into an unordered html list.

Collect List - 4138 entries

Convert to comma separated list.

Entries sort - 71 entries

It cames to my mind a weird idea : sorting parts of my .vimrc. Take few minutes to sort out this, it's easy !

Mirror Symmetry - 739 entries

Add backslashes.

Restore order to the alphabet - 161 entries

The numbers are OK. The letters are wonky.

Line 'em up! - 345 entries

It can be so hard to keep everything neatly lined-up. Somebody clearly hasn't bothered here. Tidy it up, please!

swap or reverse - 98 entries

Try to swap or reverse the line as needed.

Tiny column alignment - 39 entries

Align using the four blocks, don't forget to lowercase and have fun!

readability - 298 entries

Make the code readable by adding some spaces

remove all lines in first part - 162 entries

From the second part, remove all lines in the first part. It can be useful when you have done something from a long list, you want to know what is not done yet!

Shuffled numbers - 203 entries

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

camel riding - 733 entries

add a prefix on some camelCase variables

Merge blank lines and properly capitalize - 41 entries

Here you need complete 2 tasks: 1. Remove all unwanted continuous blank lines and leave only 1 blank line between paragraphs. 2. Properly capitalize the sentences.

Remove hard line breaks - 43 entries

Text files with Hard breaks are not good for e-readers. We need remove all hard line breaks and have long lines.

Custom McCarthy sequence - 31 entries

Generate the first one hundred and twenty numbers (starting with n=1). See here for some inspiration: http://en.wikipedia.org/wiki/McCarthy_91_function

Fix the XML - 933 entries

The challenge consists in having a valid xml from an incomplete source.

Rail fence transposition cipher - 70 entries

Solve a rail fence transposition cipher using vim. This ciphertext was created using two rails. Use vim to transpose the text and recover the original quote.

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!

Land of the Lost - 71 entries

Enter the tabs below the lyrics

Not enough Ps - 61 entries

Different type of code

Fill visual area - 73 entries

Just have fun!

Conway sequence - 22 entries

Generate the the first fifteen numbers. See here for more information: http://en.wikipedia.org/wiki/Look-and-say_sequence

Logging with key - 281 entries

Sometimes it is better to log with meaningful key

Sorting database text output - 194 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?

ASCII box - 304 entries

Don't forget to fix typos!

VimGolf Chatter