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]

32814 active golfers, 395802 entries, 535 challenges

Open VimGolf challenges

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 - 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 - 501 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 - 102 entries

Split up the IP addresses in the right way.

Lenny Spiral - 12 entries

Make one lenny into an infinite army of lennys.

Remember VimGolf Rules ! - 234 entries

Rules, ... and don't forget !

Sort yaml structures alphabetically by root key names - 28 entries

sometimes we want to sort structures alphabetically in yaml files

Array propagate - 309 entries

Complete the array with the keys as part of the value

sort python functions and methods alphabetically - 18 entries

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

Back to the roots - 43 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 - 1773 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 - 156 entries

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

multiple cursor alternative - 1441 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} - 293 entries

Migrate a JavaScript String from concatenation to ES6 interpolation.

Array transposition - 2295 entries

Transpose two arrays into one.

Create a table - 302 entries

Convert the given input into a formatted table

Todo list specification - 362 entries

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

Separate the lines - 155 entries

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

Add Go XML to structure tags - 148 entries

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

Hidden Message - 62 entries

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

Missing Library and a Typo - 830 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 - 293 entries

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

For all cases. - 126 entries

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

From argument to object - 1258 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 - 86 entries

Add arrow at same distance

Stairstep digits - 240 entries

Remove the evens. Double the odds.

comment and uncomment code inline - 984 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 - 913 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 - 248 entries

Move a block inside another block and indent it

Format java properties - 65 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 - 794 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 - 77 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! - 46 entries

I bumped into this in a dailywtf code: http://pastebin.com/QApa5ycS 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 - 266 entries

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

Change attribute to getter - 106 entries

Wrap attributes with a getter method.

replace 2nd column blanks with values in same column if blank - 210 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 - 142 entries

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

Order and join - 870 entries

There's something special about the input order.

Start coding format - 128 entries

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

7th Birthday - 182 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.

VimGolf Chatter