Real Vim ninjas count every keystroke - do you?

Pick a challenge, fire up Vim, and show us what you got.

Leaderboard, Changelog, Rules & FAQ, updates: @vimgolf, RSS.

Your VimGolf key: please sign in

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put 4fa085222037000001000045

Reverse and double space

Reverse the order of the given lines and double space everything

Start file
1. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
2. Nulla vitae elit libero, a pharetra augue. Donec sed odio dui.
3. Aenean eu leo quam.
4. Pellentesque ornare sem lacinia quam venenatis vestibulum.
5. Aenean lacinia bibendum nulla sed consectetur.
End file
5. Aenean lacinia bibendum nulla sed consectetur.

4. Pellentesque ornare sem lacinia quam venenatis vestibulum.

3. Aenean eu leo quam.

2. Nulla vitae elit libero, a pharetra augue. Donec sed odio dui.

1. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

View Diff

1,4d0
< 1. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
< 2. Nulla vitae elit libero, a pharetra augue. Donec sed odio dui.
< 3. Aenean eu leo quam.
< 4. Pellentesque ornare sem lacinia quam venenatis vestibulum.
5a2,10
> 
> 4. Pellentesque ornare sem lacinia quam venenatis vestibulum.
> 
> 3. Aenean eu leo quam.
> 
> 2. Nulla vitae elit libero, a pharetra augue. Donec sed odio dui.
> 
> 1. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
> 

Solutions

The best way to learn is to practice. Below, you will find some of the solutions other golfers have entered. To unlock higher ranked solutions, submit your own entry which does as well or better than the solutions you can currently see - climb the ladder!

Check out these helpful resources to improve your Vim skills... Game on.

Unlock 120 remaining solutions by signing in and submitting your own entry
#121 barnabaguy / @barnabaguy - Score: 17 - 02/23/14 @ 09:24
:sor!<CR>qqo<Esc>jq4@qZZ

0 comments

#122 w1zeman1p / @wizemanip - Score: 17 - 05/10/14 @ 03:33
:sor!<CR>qqo<Esc>jq4@qZZ

0 comments

#123 Kyle Travis / @kmakai - Score: 17 - 05/16/14 @ 22:59
:sor!<CR>:%s/$/\r<CR>ZZ

0 comments

#124 Justin Knag / @justinknag - Score: 17 - 08/28/14 @ 16:33
:sor!<CR>qqo<Esc>jq4@qZZ

0 comments

#125 Daniel Lundin / @danielundin - Score: 18 - 05/04/12 @ 10:19
:sort!<CR>qqo<Esc>jq4@qZZ

0 comments

#126 magdzikk / @magdzikk1 - Score: 18 - 05/18/12 @ 20:56
:sor!<CR>o<Esc>j.j.j.j.ZZ

0 comments

#127 Underhill Labs / @underhilllabs - Score: 18 - 10/29/12 @ 15:44
:so<Tab>!<CR>o<Esc>+.+.+.+.ZZ

0 comments

#128 Saxon Unrue / @joeunrue - Score: 18 - 11/09/12 @ 13:34
:sor!<CR>o<Esc>j.j.j.j.ZZ

0 comments

#129 Dave Aitken / @actionshrimp - Score: 18 - 08/27/13 @ 19:07
::sor!<CR>qqo<Esc>jq4@qZZ

0 comments

#130 Tj / @yrddy - Score: 18 - 08/19/14 @ 11:26
:sor!<CR>qqo<C-C><C-C>jq4@qZZ

0 comments

#131 ise0615 / @ise0615 - Score: 19 - 05/02/12 @ 18:15
:sort!<CR>:%s/$/\r/<CR>ZZ

0 comments

#132 Eric Weikl / @ericweikl - Score: 19 - 05/02/12 @ 19:49
:g/^/m0<CR>qqo<Esc>jq4@qZZ

0 comments

#133 Jacob Vosmaer / @jacobvosmaer - Score: 19 - 06/03/12 @ 13:42
:g/^/m0<CR>:%s/$/\r<CR>ZZ

0 comments

#134 captain_morgan / @captain_morgan - Score: 19 - 06/05/12 @ 09:59
:g/^/m0<CR>:%s/$/\r<CR>ZZ

0 comments

#135 Tyler Breisacher / @tbreisacher - Score: 19 - 08/25/12 @ 06:10
:%sort!<CR>qao<Esc>jq4@aZZ

0 comments

#136 Arto Vuori / @dhpe - Score: 19 - 08/31/12 @ 19:43
:g/^/m0<CR>qao<Esc>jq4@aZZ

0 comments

#137 Karun Ramakrishnan / @the_karun - Score: 19 - 04/08/13 @ 17:58
:sor!<CR>:%s/$/\r/g<CR>ZZ

0 comments

#138 Woojung Kim 김우중 / @_kimwz - Score: 19 - 07/15/13 @ 10:28
:sor! n<CR>:%s/$/\r<CR>ZZ

0 comments

#139 Endir / @Endir2 - Score: 19 - 04/18/14 @ 13:43
:sor!n<CR>:%s,$,\r,<CR>ZZ

0 comments

#140 Mac Heller-Ogden / @twosoul - Score: 20 - 05/02/12 @ 00:52
:g/^/m0<CR>:g/^/pu _<CR>ZZ

0 comments

#141 Ricardo Mendes / @locks - Score: 20 - 05/02/12 @ 01:07
:g/^/m0<CR>:g/^/pu _<CR>ZZ

0 comments

#142 Will Furnass / @WillFurnass - Score: 20 - 05/16/12 @ 14:12
:g/^/m0<CR>:g/^/pu _<CR>ZZ

0 comments

#143 Viswanath Sivakumar / @viswanathgs - Score: 20 - 08/30/12 @ 21:05
:g/^/m0<CR>:%s/$/\r/<CR>ZZ

0 comments

#144 JustGage / @JustGage - Score: 21 - 09/03/12 @ 07:24
:sor!<CR>o<Esc>j.j.j.j.:w<CR>ZZ

0 comments

#145 NuM / @NuM314 - Score: 21 - 10/05/13 @ 23:32
qao<Esc>kV/1<CR>jdpkq3@ao<Esc>ZZ

0 comments

#146 Alessandro Lisander / @wuiimu - Score: 21 - 01/06/14 @ 09:38
:g/^/m0<CR>:%s/$/\r/g<CR>ZZ

0 comments

#147 J Paul Daigle / @jpauldaigle - Score: 22 - 05/23/12 @ 19:06
qao<Esc>Vkx/5<CR>p:1<CR>q3@ao<Esc>ZZ

0 comments

#148 Viktor Jackson / @AntiStalinista - Score: 25 - 05/05/12 @ 03:16
:g/^/m0<CR>o<Esc>j.j.j.j.<Esc>:w<CR>:q<CR>

0 comments

#149 bsjd / @bsjd - Score: 27 - 05/07/12 @ 17:31
4ddo<Esc>p3ddo<Esc>p2ddo<Esc>pddo<Esc>po<Esc>ZZ

0 comments

#150 Thijs Brobbel / @tiesmaster - Score: 34 - 05/29/12 @ 12:59
ddGpo<Esc>kO<Esc>ggdd}PO<Esc>ggdd}PO<Esc>ggddpO<Esc>ZZ

0 comments

#151 Noel Alejandro / @noelrock333 - Score: 77 - 06/23/12 @ 00:55
:%s/s<BS>s<BS><BS>/x<BS>2<BS>.$.<BS>/.|<BS>\<BS>'<BS>\r/<CR>jkdd!G<BS><BS><BS>1GP<Down>dd8Gp3Gdd6Gpkddd2Gup<Esc>uudd2Gp<Esc>:w<CR><C-W>q

0 comments

Created by: @twosoul

151 active golfers, 360 entries

Leaderboard (lowest score wins):
14
#1 - Tim Chase / @gumnos

05/02/2012 at 01:08AM

14
#2 - Marcin Kulik / @sickill

05/02/2012 at 08:05AM

14
#3 - Kent Sibilev / @datanoise

05/02/2012 at 10:02PM

14
#4 - Daumantas / @dbaltrus

05/03/2012 at 12:37AM

14
#5 - Federico Galassi / @federicogalassi

05/03/2012 at 01:46AM

14
#6 - Sebastian Kusnier / @skusnier

05/03/2012 at 07:54PM

14
#7 - Martin Aumueller / @aumuell

05/04/2012 at 08:00PM

14
#8 - Rod Knowlton / @codelahoma

05/05/2012 at 07:53PM

14
#9 - Jiří Chára / @JiriChara

05/06/2012 at 12:40PM

14
#10 - kurban / @kurban_mall

05/06/2012 at 04:01PM

14
#11 - Son of Bongo / @bpcode

05/07/2012 at 04:25PM

14
#12 - Kevin Hansen / @coolwebteacher

05/07/2012 at 11:18PM

14
#13 - Sergey / @sav86

05/09/2012 at 02:15AM

14
#14 - mnx / @mnxx

05/10/2012 at 08:40PM

14
#15 - Neil / @spameldoon

05/12/2012 at 01:56AM

14
#16 - Evgeny Persienko / @zzazab

05/12/2012 at 05:34AM

14
#17 - Christian Gaida / @chgaida

05/12/2012 at 04:44PM

14
#18 - Urtica dioica / @udioica

05/13/2012 at 03:16PM

14
#19 - Sunny Klair / @0xSunhay

05/13/2012 at 10:54PM

14
#20 - CyLiu / @CyLiu

05/15/2012 at 02:03PM

14
#21 - Mikael Engström / @mikaelengstrom

05/17/2012 at 09:29AM

14
#22 - Forrest L Norvell / @othiym23

05/18/2012 at 06:39AM

14
#23 - Benjamin Hitov / @benhitov

05/19/2012 at 04:12AM

14
#24 - Vasil Sakarov / @vsakarov

05/21/2012 at 05:10PM

14
#25 - John Whitley / @johnwhitley

05/27/2012 at 06:10PM

14
#26 - Justin Love / @wondible

05/29/2012 at 06:39PM

14
#27 - quintin / @quintinjeannoel

05/30/2012 at 04:57PM

14
#28 - Benoit Mortgat / @Benoit_Mortgat

06/05/2012 at 06:39PM

14
#29 - Benson Kim / @BensonRLA

06/06/2012 at 11:35AM

14
#30 - Paul Gessler / @pdgessler

06/07/2012 at 03:54AM

14
#31 - chikatoike / @chikatoike

06/26/2012 at 03:51PM

14
#32 - John Dahlström / @dahlstromjohn

07/01/2012 at 09:49PM

14
#33 - Raúl Jara / @rauljara

07/06/2012 at 08:48PM

14
#34 - Wei Dai / @clvv42

07/12/2012 at 08:48PM

14
#35 - Heath Matlock / @heathmatlock

07/18/2012 at 12:42PM

14
#36 - Joseph J. Piché / @jjpiche

08/25/2012 at 02:42AM

14
#37 - Conner McDaniel / @connermcd

09/18/2012 at 04:39AM

14
#38 - Vim rocks / @vimrocks

10/09/2012 at 01:11PM

14
#39 - Drew Neil / @nelstrom

11/27/2012 at 12:21AM

14
#40 - Marcin Sza / @coot_

12/05/2012 at 08:18PM

14
#41 - Yann Moisan / @YannMoisan

01/12/2013 at 07:00PM

14
#42 - Koko / @Koko72525913

01/17/2013 at 04:19PM

14
#43 - Trevor Powell / @DoomedBunnies

03/20/2013 at 11:14PM

14
#44 - Marco Hinz / @_mhinz_

05/22/2013 at 10:19PM

14
#45 - Petro Тrouq / @zulolosi

07/04/2013 at 07:36PM

14
#46 - Bradd Szonye / @bszonye

07/14/2013 at 06:35AM

14
#47 - Steve Tjoa / @stevetjoa

07/29/2013 at 10:46PM

14
#48 - Raphael Saunier / @RaphaelSaunier

08/27/2013 at 10:59PM

14
#49 - Casey Dwyer / @caseydwyer

11/04/2013 at 09:42PM

14
#50 - Andrew O'Neill / @AndroidOatmeal

12/18/2013 at 06:11PM

14
#51 - pikaren / @REALpikaren

01/06/2014 at 04:01PM

14
#52 - Joonas Pihlajamaa / @jokkebk

02/24/2014 at 03:20PM

14
#53 - ZorgroZ / @ZorgroZ

04/12/2014 at 07:47PM

14
#54 - John Braxler / @braxler

04/15/2014 at 07:59PM

14
#55 - Ram Tamtam / @ramtamtamtam

07/28/2014 at 10:34AM

15
#56 - Aaron Lake / @metallikop

05/02/2012 at 01:23AM

15
#57 - Tibor Claassen / @codebeige

05/02/2012 at 08:36PM

15
#58 - Nolen Royalty / @NolenRoyalty

05/06/2012 at 10:51PM

15
#59 - Boyance / @Boyance_nl

05/09/2012 at 09:26PM

15
#60 - Gavin Hughes / @gavinhughes

05/13/2012 at 08:09AM

15
#61 - Sean Griffin / @sgrif

08/14/2012 at 02:04AM

15
#62 - Joe Nelson / @begriffs

09/04/2012 at 04:17AM

15
#63 - Tom Cammann / @tea_sea

10/10/2012 at 12:21AM

15
#64 - isayoldchap / @isayoldchap

09/12/2013 at 12:05AM

15
#65 - US Dollar Price / @USDollarPrice

11/06/2013 at 07:33AM

16
#66 - Jonathan Lozinski / @jlozinski

05/02/2012 at 06:12AM

16
#67 - 無ん垢の叫び / @john_ababa

05/06/2012 at 04:29AM

16
#68 - VimGolfDzNrSQleot / @VimGolfDzNrSQle

05/10/2012 at 09:25PM

16
#69 - William Dunand / @wdunand

05/11/2012 at 01:48AM

16
#70 - Greg Sabo / @gregsabo

06/21/2012 at 04:42AM

16
#71 - Nipunn Koorapati / @nipunn1313

07/21/2012 at 08:51AM

16
#72 -  Ikhsan Maulana / @ixandidu

08/18/2012 at 03:40PM

16
#73 - Joseph Reddington / @joereddington

08/21/2012 at 08:35AM

16
#74 - Édouard M'tou / @DouardM

10/09/2012 at 08:45PM

16
#75 - Matt Boehm / @mattboehm

11/08/2012 at 02:58AM

16
#76 - Rey Wright / @reywright

11/29/2012 at 12:47AM

16
#77 - curist / @curist

07/09/2013 at 08:28AM

16
#78 - Bart of Denver / @bartofdenver

08/13/2013 at 03:20AM

16
#79 - John Papanastasiou / @JohnPapps

08/27/2013 at 12:49PM

16
#80 - Zach Kemp / @zvksf

12/24/2013 at 05:27AM

16
#81 - Caek / @Caek_

07/29/2014 at 11:50AM

16
#82 - Leeren / @Leeren

08/10/2014 at 09:20PM

17
#83 - h_east (DDD ready) / @h_east

05/02/2012 at 02:51AM

17
#84 - Henri Wiechers / @hwiechers

05/02/2012 at 04:34AM

17
#85 - vall / @provall1

05/04/2012 at 11:28AM

17
#86 - Kerson Hsiao / @KersonHsiao

05/05/2012 at 03:09PM

17
#87 - Mattiassich Ákos / @mattiassicha

05/06/2012 at 05:15AM

17
#88 - Jez Cope / @jezcope

05/06/2012 at 07:28PM

17
#89 - Fabien Pelletier / @FabPelletier

05/07/2012 at 01:25AM

17
#90 - Gavin Rogers / @KC9KVQ

05/07/2012 at 08:09PM

17
#91 - Alex Arnell / @alexarnell

05/07/2012 at 10:54PM

17
#92 - Dave C / @dmlc133

05/10/2012 at 01:08PM

17
#93 - Julio Silva / @9jb

05/14/2012 at 08:27PM

17
#94 - Christopher Brew / @Seph1rothVII

05/18/2012 at 09:27PM

17
#95 - Chris Dahms / @zentrified

05/20/2012 at 08:15PM

17
#96 - Javier Blanco / @jbgutierrez

05/23/2012 at 07:21PM

17
#97 - OMF / @exolon

05/25/2012 at 12:42PM

17
#98 - Øystein Walle / @oysteinwalle

05/31/2012 at 06:22PM

17
#99 - Asenar / @asenar

06/02/2012 at 04:14PM

17
#100 - Josh Steiner / @josh_steiner

06/12/2012 at 01:09AM

17
#101 - utopiah / @utopiah

06/13/2012 at 09:56AM

17
#102 - Eric Söderström / @eksoderstrom

07/20/2012 at 03:48PM

17
#103 - Glen / @Glen_S

07/25/2012 at 04:04AM

17
#104 - Rahul Savani / @rahul_savani

08/11/2012 at 06:14PM

17
#105 - Michael Limiero / @michaellimiero

08/14/2012 at 03:52PM

17
#106 - Jordan Scales / @prezjordan

08/18/2012 at 02:03AM

17
#107 - mhb / @mhbvim

09/18/2012 at 09:54AM

17
#108 - matthew keesan / @keesan

10/23/2012 at 02:03PM

17
#109 - Nicolas Friedli / @NicolasFriedli

10/28/2012 at 10:47AM

17
#110 - Adam Dratwinski / @adwinsky

11/27/2012 at 08:35PM

17
#111 - Pradeep Kumar / @pradeep6kumar

12/12/2012 at 11:17AM

17
#112 - cj / @cj01101

08/16/2013 at 10:15PM

17
#113 - James / @Dronak

08/29/2013 at 06:12PM

17
#114 - Hachez Floran / @FloranHachez

09/06/2013 at 11:03PM

17
#115 - brett / @brettyukich

09/22/2013 at 04:33AM

17
#116 - Oliver Christ / @0liverChrist

09/27/2013 at 10:27PM

17
#117 - Sam Burk / @smwbk

12/21/2013 at 05:53AM

17
#118 - jgpaiva / @jgpaiva

02/03/2014 at 06:44PM

17
#119 - Quota / @Quotad

02/06/2014 at 09:35AM

17
#120 - Ben Lambeth / @azy2_ben

02/13/2014 at 07:06PM

17
#121 - barnabaguy / @barnabaguy

02/23/2014 at 09:24AM

17
#122 - w1zeman1p / @wizemanip

05/10/2014 at 03:33AM

17
#123 - Kyle Travis / @kmakai

05/16/2014 at 10:59PM

17
#124 - Justin Knag / @justinknag

08/28/2014 at 04:33PM

18
#125 - Daniel Lundin / @danielundin

05/04/2012 at 10:19AM

18
#126 - magdzikk / @magdzikk1

05/18/2012 at 08:56PM

18
#127 - Underhill Labs / @underhilllabs

10/29/2012 at 03:44PM

18
#128 - Saxon Unrue / @joeunrue

11/09/2012 at 01:34PM

18
#129 - Dave Aitken / @actionshrimp

08/27/2013 at 07:07PM

18
#130 - Tj / @yrddy

08/19/2014 at 11:26AM

19
#131 - ise0615 / @ise0615

05/02/2012 at 06:15PM

19
#132 - Eric Weikl / @ericweikl

05/02/2012 at 07:49PM

19
#133 - Jacob Vosmaer / @jacobvosmaer

06/03/2012 at 01:42PM

19
#134 - captain_morgan / @captain_morgan

06/05/2012 at 09:59AM

19
#135 - Tyler Breisacher / @tbreisacher

08/25/2012 at 06:10AM

19
#136 - Arto Vuori / @dhpe

08/31/2012 at 07:43PM

19
#137 - Karun Ramakrishnan / @the_karun

04/08/2013 at 05:58PM

19
#138 - Woojung Kim 김우중 / @_kimwz

07/15/2013 at 10:28AM

19
#139 - Endir / @Endir2

04/18/2014 at 01:43PM

20
#140 - Mac Heller-Ogden / @twosoul

05/02/2012 at 12:52AM

20
#141 - Ricardo Mendes / @locks

05/02/2012 at 01:07AM

20
#142 - Will Furnass / @WillFurnass

05/16/2012 at 02:12PM

20
#143 - Viswanath Sivakumar / @viswanathgs

08/30/2012 at 09:05PM

21
#144 - JustGage / @JustGage

09/03/2012 at 07:24AM

21
#145 - NuM / @NuM314

10/05/2013 at 11:32PM

21
#146 - Alessandro Lisander / @wuiimu

01/06/2014 at 09:38AM

22
#147 - J Paul Daigle / @jpauldaigle

05/23/2012 at 07:06PM

25
#148 - Viktor Jackson / @AntiStalinista

05/05/2012 at 03:16AM

27
#149 - bsjd / @bsjd

05/07/2012 at 05:31PM

34
#150 - Thijs Brobbel / @tiesmaster

05/29/2012 at 12:59PM

77
#151 - Noel Alejandro / @noelrock333

06/23/2012 at 12:55AM