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]

31803 active golfers, 385499 entries, 531 challenges

Open VimGolf challenges

If-then-else regexp - 37 entries

Rules: - golf is never following golf - vim comes first! Drawing a finite-state machine diagram could help. #regexp

Tables, Functions, Sprocs - 109 entries

In order to load some scripts into my database in the correct order I need to load tables first (t_), then functions (fn_), then stored procedures (sp_). The order of the t_ lines and the order of the sp_ lines should also match. Reorder the lines so they will load correctly.

Simple Maths 2 - 19 entries

Time to practice expression register! #maths #linear

Rule 110 - 33 entries

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

Join 'em - 219 entries

This shouldn't be too tough

Around the clock - 174 entries

You'll want to use 2 special commands to complete this. If you haven't yet, read through 'input.txt', especially :help simple-changes

Reorder the groups - 1095 entries

Change the order so that the groups of fruit come before the vegetables.

Add semicolons - 10475 entries

Simply add a semicolon at the end of each line

html paragraph to table - 583 entries

reformat html paragraph to table

ninja substitution - 1278 entries

How can you reuse a previous substitution ?

[Real World] PHP To Markdown - 25 entries

Fun refactoring I had to do in the real world. This presents several challenges: - How to create a table that fits the informations exactly - How to keep track of two informations per line while doing the refactoring - Generate the link from the actual text Have fun!

Resort and deup a CSV list - 135 entries

I'm always adding items to a sorted list. There has to be a better way dedup and resort the lists. There are multiple lists with varying lengths to discourage manual sorting. Also Australia's animals are weird.

Pascal's Triangle - 27 entries

Generate the first 17 left-justified rows of Pascal's triangle.

Triangular Numbers - 82 entries

Generate the first 50 triangular numbers.

Kolakoski sequence -- level 2 - 10 entries

This time, the line above describes the line below. Level 1 at: http://www.vimgolf.com/challenges/5c880211ab65cb00065c74eb

Convert Application Output to CSV - 171 entries

Change the application output to comma-separated values

Two pairs of cluster of letters creates word - 706 entries

Clean and group.

Kolakoski sequence -- level 1 - 51 entries

Generate the Kolakoski sequence as described by its first 75 terms.

Cool or not? - 748 entries

abc trying to be cool or not...

Letterbox - 86 entries

Make a box!

The D a n k Side of the Moon - 38 entries

You're making a vaporwave cover of The Dark Side of the Moon. So for the tracklisting, you want to: 1. Change the track names to v a p o r c a s e 2. Double the track lengths (since you're slowing them down). Well... let's just double the minutes.

Box it - 7667 entries

Create a box around a line.

Flip the bit - 104 entries

Change the specific 0 to a 1.

snowflake fractal - 37 entries

From step 0 to step 3 of a fractal

Increment each number - 946 entries

Increment each number individually by one

Build a six - 267 entries

Just enjoy building "a" floors...

move titles next to url, in quotes - 481 entries

had trouble with something similar

One to Ten - 2078 entries

Generate the sequence of numbers from 1 to 10, one number per line. Inspired by this Reddit thread: https://redd.it/ak4it2

Delete to the end of the current line - 711 entries

Delete to the end of the current line, but keep the character under the cursor.

Put the months in order - 915 entries

Our contractor thought that months should be in alphabetical order. Put them in calendar order please.

remove lines containing the word "reader" - 3439 entries

easy stuff

Python challenge - 132 entries

Change the types of the variables in the list from str to float, while keeping the truncation.

Change part of a function name in multiple occurrences - 595 entries

Change the middle part of the function name in multiple places, preferably using the next and dot commands.

Santa's naughty / nice list - 75 entries

Christmas is here and Santa hasn't decided who's naughty or nice yet. He's given a list of names to his programmer friend to quickly split the children into naughty and nice. Hint: There's a hidden pattern that might be familiar.

My cafe needs a new menu - 22 entries

Help! My cafe needs a new menu and I've only got this plain-text file from the kitchen. In order to get it printed, I need to transform it into a markdown file with; headings for each type of item, prices on each menu item, dietary options and a key down the bottom.

unknown command - 143 entries

I want change 5 words

simple format (3) - 43 entries

reverse two column values!

Simple format (2) - 306 entries

try again!

Applying same text modification in several lines - 2720 entries

Remove identical text at the beginning of several lines and the closing parenthesis.

Preferably without multi-cursor plugin - 466 entries

Originally asked as question on reddit by kpthunder: https://www.reddit.com/r/vim/comments/9fvsro/what_is_the_most_efficient_way_to_go_about/

Com(m)a Trouble - 3321 entries

Someone was real stupid when placing his commas. Can you fix it?

Array Transposition - 166 entries

Transpose four arrays into two.

On Being Stylish - 58 entries

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

convert yml into java pojo field - 801 entries

How fast vim can create fields for java pojo i.e class declaration referring to a (simple) yml file

Swap values inside brackets - 2423 entries

Easy challenge.

Swap the operands under comparison - 253 entries

Swap the operands under comparison to prevent null pointer exception (at least in java)

Number Sort - 283 entries

sort the list of newline-separated numbers incrementally. Numbers are in the range 1 to 1000, with 500 missing

Long prime list - filter version - 24 entries

I've used the maximum input/diff/output size allowed by vimgolf to get a list of integers up to 1460 separated by newlines, and your goal is to only keep the lines containing primes. There are 232 of them I hope some of you will golf vimscript itself to create some function to run as a primality check for each line, which is a good exercise if you haven't done much vimscript yet! You're invited to also try copy-pasting and doing other non-smart text manipulation. Even more interesting would be to see a solution that uses text manipulation to do the filtering! Whether you use vimscript, normal-mode primality checks, or text manipulation, as long as the end result is valid, your answer will be valid! Let's see which method does better here. Best of luck!

Learn some german verbs - 495 entries

The list needs to be structured so we can print in verbatim and feel ok about how it looks.

Splits long lines in more readable ones - 10 entries

Those tests have too long lines. We have to split the to have more readable ones. This is based on a real project with Ruby and RSpec.

VimGolf Chatter