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]

35491 active golfers, 427922 entries, 554 challenges

Open VimGolf challenges

One to Ten - 2128 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 - 729 entries

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

Put the months in order - 926 entries

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

remove lines containing the word "reader" - 3502 entries

easy stuff

Python challenge - 146 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 - 627 entries

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

Santa's naughty / nice list - 77 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 - 154 entries

I want change 5 words

simple format (3) - 65 entries

reverse two column values!

Simple format (2) - 328 entries

try again!

Applying same text modification in several lines - 2820 entries

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

Preferably without multi-cursor plugin - 530 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 - 3552 entries

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

Array Transposition - 171 entries

Transpose four arrays into two.

On Being Stylish - 71 entries

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

convert yml into java pojo field - 829 entries

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

Swap values inside brackets - 2443 entries

Easy challenge.

Swap the operands under comparison - 266 entries

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

Number Sort - 300 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 - 26 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 - 529 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.

Subnetting - 109 entries

Split up the IP addresses in the right way.

Lenny Spiral - 13 entries

Make one lenny into an infinite army of lennys.

Remember VimGolf Rules ! - 254 entries

Rules, ... and don't forget !

Sort yaml structures alphabetically by root key names - 35 entries

sometimes we want to sort structures alphabetically in yaml files

Array propagate - 318 entries

Complete the array with the keys as part of the value

sort python functions and methods alphabetically - 21 entries

* sort functions in the python file alphabetically * sort functions within a Class alphabetically * sort Classes alphabetically

Back to the roots - 47 entries

Johnny has a file with more integers. He wants to change each number with its square root. Can you help him?

42-header - 36 entries

Rush 42mexican-standoff at 42 school

TAR archive pretty print - 22 entries

Will you use isk ?

mp3 - Cutlist - 28 entries

An audio CD was accidentally ripped into one single mp3 file. A dummy cue-file now needs to be filled out with the correct values to get single mp3 files.

Team names - 1795 entries

The team names are misspelled.

Converting group lines from format A to Format B - 20 entries

Convert from one format to another

Interactive git rebase changing commands - 160 entries

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

multiple cursor alternative - 1460 entries

from: https://www.reddit.com/r/vim/comments/6w5pfa/crosspost_from_remacs_how_would_you_do_this_in_vim/

Flatten repo - 22 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 - 21 entries

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

Un"finnish"ed Work - 105 entries

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

Hello ${world} - 298 entries

Migrate a JavaScript String from concatenation to ES6 interpolation.

Array transposition - 2334 entries

Transpose two arrays into one.

Create a table - 318 entries

Convert the given input into a formatted table

Todo list specification - 375 entries

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

Separate the lines - 171 entries

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

Add Go XML to structure tags - 151 entries

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

Hidden Message - 74 entries

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

Missing Library and a Typo - 838 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 - 157 entries

Turn the plain text table to an HTML table.

Simple addition - 301 entries

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

VimGolf Chatter