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

Innocent Monster - 35 entries

You have the tools, just create him!

  • Best score: 61
  • Best player score: 68
  • Position: #6 / 13
  • Number of attempts: 2
Put a newline after every 10 lines in vim - 279 entries

Goal is to put a newline after every 10 lines in vim.

  • Best score: 10
  • Best player score: 11
  • Position: #26 / 112
  • Number of attempts: 5
Java to JavaScript - 51 entries

Let convert some simple Java file to JavaScript!

  • Best score: 59
  • Best player score: 67
  • Position: #10 / 17
  • Number of attempts: 3
Wikitext headings to markdown - 302 entries

Convert the wikitext headings to markdown.

  • Best score: 20
  • Best player score: 23
  • Position: #39 / 80
  • Number of attempts: 4
hello-world-vimgolf - 809 entries

Simple number generation

  • Best score: 10
  • Best player score: 10
  • Position: #114 / 240
  • Number of attempts: 5
Contribute to keyboard mashing - 420 entries

Speak in tongues

  • Best score: 17
  • Best player score: 19
  • Position: #71 / 131
  • Number of attempts: 4
Learn to ask for :help - 277 entries

Learn to use the help to reduce your strokes...

  • Best score: 19
  • Best player score: 26
  • Position: #32 / 64
  • Number of attempts: 4
Plotting some variables in python - 868 entries

4 sets of (x,y) variables to plot. Just increment the numbers! Well, let's change the colors of the lines as well. Oh and we meant to plot the absolute values of course.

  • Best score: 34
  • Best player score: 42
  • Position: #75 / 174
  • Number of attempts: 1
Transpose a python matrix - 418 entries

Rotate the matrix in 90 degrees.

  • Best score: 23
  • Best player score: 24
  • Position: #20 / 84
  • Number of attempts: 12
Create a diamond comment - 183 entries

Encapsulate the text in a diamond pattern.

  • Best score: 27
  • Best player score: 62
  • Position: #35 / 45
  • Number of attempts: 1
Write Hello World in the 'i use arch btw' -programming language - 17 entries

> "I use Arch btw" is an esoteric programming language based on Brainfuck in which the Brainfuck commands have been replaced with the following keywords: i, use, arch, linux, btw, by, the, way. https://github.com/OverMighty/i-use-arch-btw

  • Best score: 162
  • Best player score: 460
  • Position: #7 / 7
  • Number of attempts: 1
simple replacements - 847 entries

The goal is to see the replacement commands in action.

  • Best score: 19
  • Best player score: 27
  • Position: #169 / 190
  • Number of attempts: 1
Inverting Lines - 1113 entries

A simple challenge to invert all lines, except the first.

  • Best score: 10
  • Best player score: 10
  • Position: #141 / 308
  • Number of attempts: 2
Python dataclasses - 520 entries

Simple challenge to extract fields from a Python class

  • Best score: 19
  • Best player score: 20
  • Position: #59 / 140
  • Number of attempts: 4
Modernise code - 708 entries

Modernise and clean up some C++ code.

  • Best score: 34
  • Best player score: 36
  • Position: #60 / 162
  • Number of attempts: 3
swap number pairs - 1355 entries

Swap the numbers in a bunch of 2-element arrays.

  • Best score: 16
  • Best player score: 25
  • Position: #127 / 262
  • Number of attempts: 1
ssh config skills - 175 entries

Parse output from `kuebctl get no -o wide` into an .ssh/config file!

  • Best score: 41
  • Best player score: 64
  • Position: #31 / 44
  • Number of attempts: 1
Python: Def to Lambda - 239 entries

LAMBDA!!!

  • Best score: 19
  • Best player score: 19
  • Position: #53 / 88
  • Number of attempts: 3
Format the CSS - 66 entries

You just copied some CSS color names from the web and need to add them to your python module. Create the COLORS variable and assign a dict() with the names as keys and hex-colors as values. BEWARE OF THE TABS!!

  • Best score: 41
  • Best player score: 45
  • Position: #15 / 27
  • Number of attempts: 1
Rural Post - 3886 entries

Simple challenge to remove all but the post code on each line

  • Best score: 9
  • Best player score: 9
  • Position: #173 / 962
  • Number of attempts: 10
Satisfy the go linter - 1809 entries

You just came up with this briliant go vars package. But dang, you forgot to add comments to the exported variables. Can you add a comment over each variable with a TODO-placeholder?

  • Best score: 20
  • Best player score: 22
  • Position: #157 / 362
  • Number of attempts: 3
Add quotes to ansible playbook - 655 entries

You created an ansible playbook, but forgot to add quotes. Can you fix it?

  • Best score: 8
  • Best player score: 9
  • Position: #145 / 210
  • Number of attempts: 2
Multiline to Single Line - 408 entries

Convert a multiline, indented file to a single line with no whitespace

  • Best score: 5
  • Best player score: 5
  • Position: #170 / 195
  • Number of attempts: 1
xrandr outputs and dashes - 587 entries

uh oh, different video drivers identify display outputs with more dashes. Quick, need to change this xrandr script!

  • Best score: 12
  • Best player score: 20
  • Position: #175 / 191
  • Number of attempts: 4
From a Thunderlink to a Markdown link - 677 entries

ThunderLinks are durable hyperlinks to specific email messages generated from Thunderbird in HTML format. Leverage the power of vim to make them suitable for a markdown-formatted file.

  • Best score: 18
  • Best player score: 35
  • Position: #142 / 151
  • Number of attempts: 1
Yo To Hello - 996 entries

Simply Turn Yo To Hello

  • Best score: 10
  • Best player score: 10
  • Position: #350 / 460
  • Number of attempts: 1
C# function to F# - 8 entries

Converting from C# to F# is not hard, but requires some manual labor. Here you should convert a C# function using a C# class to a F# function using a C# class.

  • Best score: 108
  • Best player score: 122
  • Position: #3 / 5
  • Number of attempts: 1
Replace pattern with 1, 2, 3, ... on each line - 968 entries

For each line replace a search pattern (in this case $) with numbers starting at 1 and then increasing by 1 for each replaced match. a$b$c$ -> a0b1c2

  • Best score: 21
  • Best player score: 41
  • Position: #180 / 198
  • Number of attempts: 1
Simple, Practical, and Common - 32803 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: 23
  • Position: #2751 / 7246
  • Number of attempts: 3
Quote modules - 1003 entries

Complete golang import statement.

  • Best score: 21
  • Best player score: 26
  • Position: #132 / 255
  • Number of attempts: 1
remove lines containing the word "reader" - 3442 entries

easy stuff

  • Best score: 9
  • Best player score: 9
  • Position: #483 / 1115
  • Number of attempts: 3
Array propagate - 305 entries

Complete the array with the keys as part of the value

  • Best score: 23
  • Best player score: 26
  • Position: #55 / 107
  • Number of attempts: 1
For all cases. - 124 entries

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

  • Best score: 8
  • Best player score: 17
  • Position: #86 / 88
  • Number of attempts: 1
Stairstep digits - 239 entries

Remove the evens. Double the odds.

  • Best score: 9
  • Best player score: 25
  • Position: #114 / 114
  • Number of attempts: 1
Order and join - 859 entries

There's something special about the input order.

  • Best score: 10
  • Best player score: 19
  • Position: #224 / 237
  • Number of attempts: 1
vim1001 - 254 entries

change number 1001 into a "vim1001 sequence". (My first challenge, hope it is not too bad... )

  • Best score: 17
  • Best player score: 37
  • Position: #93 / 101
  • Number of attempts: 1
HTML to Haml - 779 entries

Help convert this HTML page to Haml.

  • Best score: 23
  • Best player score: 35
  • Position: #84 / 194
  • Number of attempts: 1
Assignment Alignment - 753 entries

line up the operators. Use spaces, not tabs.

  • Best score: 18
  • Best player score: 18
  • Position: #53 / 205
  • Number of attempts: 12
Change the content of a string - 1314 entries

This docstring is a complete lie. Fix it.

  • Best score: 22
  • Best player score: 23
  • Position: #267 / 509
  • Number of attempts: 1
Sort and add attributes - 1152 entries

Sort the states and add the attribute country to each record.

  • Best score: 33
  • Best player score: 33
  • Position: #236 / 473
  • Number of attempts: 1
Add fold markers to a .c file - 473 entries

Fold markers can make it easier to navigate source code. Add them to this .c file.

  • Best score: 30
  • Best player score: 36
  • Position: #91 / 152
  • Number of attempts: 1
Reconstruct the Sentence - 1093 entries

Get the sentence back in the proper order, remove duplicate lines, and then combine the separate lines into one.

  • Best score: 20
  • Best player score: 23
  • Position: #237 / 337
  • Number of attempts: 1
Whitespace, empty lines and tabs - 2858 entries

Convert tabs to spaces, strip empty lines and trailing whitespace.

  • Best score: 16
  • Best player score: 39
  • Position: #596 / 649
  • Number of attempts: 1
Simple text editing with Vim - 11522 entries

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

  • Best score: 13
  • Best player score: 14
  • Position: #1841 / 3380
  • Number of attempts: 4
POSIX
Twitter:

Security researcher loves to play CTF with @FlatNetworkOrg

entered into 44 challenges

contributed 0 challenges