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]

Played Challenges

Simple, Practical, and Common - 33086 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.

  • Best score: 22
  • Best player score: 22
  • Position: #762 / 7297
  • Number of attempts: 4
Swap values inside brackets - 2441 entries

Easy challenge.

  • Best score: 14
  • Best player score: 16
  • Position: #213 / 564
  • Number of attempts: 2
Unsemantic linewrapping - 849 entries

[Inspired by a blog post I read: https://scott.mn/2014/02/21/semantic_linewrapping/. Text adapted.] Sometimes when editing a Markdown file, I wrap the lines semantically. Instead of inserting a newline at 70 columns (or whatever), or making paragraphs one long line, I put in newlines at a point that seems logical to me. This may seem silly, but it produces better diffs. Semantic linewrapping also makes editing snappier. I can delete, edit or insert sentences easily using linewise operations. Code-oriented text editors like Vim and [REDACTED] are really good at this kind of manipulation. Editing text that hasn't been wrapped semantically is a pain, though:

  • Best score: 9
  • Best player score: 10
  • Position: #99 / 215
  • Number of attempts: 2
Applying same text modification in several lines - 2779 entries

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

  • Best score: 12
  • Best player score: 15
  • Position: #473 / 823
  • Number of attempts: 2
Swap the operands under comparison - 266 entries

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

  • Best score: 19
  • Best player score: 21
  • Position: #40 / 96
  • Number of attempts: 1
Add semicolons - 10717 entries

Simply add a semicolon at the end of each line

  • Best score: 10
  • Best player score: 11
  • Position: #765 / 3020
  • Number of attempts: 1
remove lines containing the word "reader" - 3483 entries

easy stuff

  • Best score: 9
  • Best player score: 9
  • Position: #4 / 1128
  • Number of attempts: 2
Com(m)a Trouble - 3478 entries

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

  • Best score: 12
  • Best player score: 13
  • Position: #207 / 780
  • Number of attempts: 2
Box it - 7722 entries

Create a box around a line.

  • Best score: 21
  • Best player score: 22
  • Position: #452 / 1842
  • Number of attempts: 2
Tables, Functions, Sprocs - 121 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.

  • Best score: 10
  • Best player score: 12
  • Position: #37 / 42
  • Number of attempts: 1
Just the middle - 11284 entries

Delete the instructions at the top and bottom.

  • Best score: 7
  • Best player score: 8
  • Position: #1990 / 4140
  • Number of attempts: 1
On Being Stylish - 71 entries

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

  • Best score: 33
  • Best player score: 46
  • Position: #12 / 18
  • Number of attempts: 2
Turn a ninja to case-insensitive [Nn][Ii][Nn][Jj][Aa] regexp! - 53 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!

  • Best score: 18
  • Best player score: 18
  • Position: #9 / 32
  • Number of attempts: 1
Adam's challenge - 922 entries

Change both normal to bold and 4 by 2. Adam Wathan challenge this on twitter . He did it in 11 keystrokes on Sublime.

  • Best score: 18
  • Best player score: 18
  • Position: #4 / 260
  • Number of attempts: 3
Nesting SASS - 257 entries

Move a block inside another block and indent it

  • Best score: 9
  • Best player score: 9
  • Position: #16 / 91
  • Number of attempts: 4
Combines all items - 290 entries

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

  • Best score: 9
  • Best player score: 9
  • Position: #18 / 131
  • Number of attempts: 2
ninja substitution - 1326 entries

How can you reuse a previous substitution ?

  • Best score: 14
  • Best player score: 16
  • Position: #136 / 252
  • Number of attempts: 2
Order and join - 913 entries

There's something special about the input order.

  • Best score: 10
  • Best player score: 12
  • Position: #161 / 248
  • Number of attempts: 3
Python challenge - 142 entries

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

  • Best score: 31
  • Best player score: 35
  • Position: #15 / 42
  • Number of attempts: 2
Change part of a function name in multiple occurrences - 611 entries

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

  • Best score: 14
  • Best player score: 18
  • Position: #154 / 196
  • Number of attempts: 1
Around the clock - 186 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

  • Best score: 13
  • Best player score: 13
  • Position: #13 / 72
  • Number of attempts: 2
Join 'em - 236 entries

This shouldn't be too tough

  • Best score: 4
  • Best player score: 5
  • Position: #43 / 140
  • Number of attempts: 1
Delete to the end of the current line - 718 entries

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

  • Best score: 5
  • Best player score: 5
  • Position: #2 / 352
  • Number of attempts: 1
change parenthesis - 263 entries

change the pair of braces into a pair of parentheses

  • Best score: 9
  • Best player score: 9
  • Position: #11 / 148
  • Number of attempts: 1
Put the months in order - 922 entries

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

  • Best score: 20
  • Best player score: 27
  • Position: #38 / 156
  • Number of attempts: 3
Reorder the groups - 1120 entries

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

  • Best score: 14
  • Best player score: 14
  • Position: #12 / 255
  • Number of attempts: 1
convert yml into java pojo field - 825 entries

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

  • Best score: 29
  • Best player score: 30
  • Position: #92 / 221
  • Number of attempts: 1
I forgot quotes - 15830 entries

Oops.

  • Best score: 10
  • Best player score: 10
  • Position: #281 / 4130
  • Number of attempts: 4
Words in parens - 12786 entries

We should all ace this, right?

  • Best score: 13
  • Best player score: 15
  • Position: #1687 / 3928
  • Number of attempts: 2
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.

  • Best score: 44
  • Best player score: 70
  • Position: #27 / 37
  • Number of attempts: 1
Rule 110 - 35 entries

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

  • Best score: 43
  • Best player score: 63
  • Position: #8 / 11
  • Number of attempts: 3
Simple text editing with Vim - 11822 entries

Make the pairs of lines match up by making each second line same as first

  • Best score: 13
  • Best player score: 13
  • Position: #543 / 3461
  • Number of attempts: 2

Contributed Challenges

Reorder the groups - 1120 entries

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

Valacar
Twitter:

entered into 32 challenges

contributed 1 challenges