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 @ 01:24
:sor!<CR>qqo<Esc>jq4@qZZ

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

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

0 comments

#148 Viktor Jackson / @AntiStalinista - Score: 25 - 05/04/12 @ 20: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 @ 10:31
4ddo<Esc>p3ddo<Esc>p2ddo<Esc>pddo<Esc>po<Esc>ZZ

0 comments

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

0 comments

#151 Noel Alejandro / @noelrock333 - Score: 77 - 06/22/12 @ 17: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/01/2012 at 06:08PM

14
#2 - Marcin Kulik / @sickill

05/02/2012 at 01:05AM

14
#3 - Kent Sibilev / @datanoise

05/02/2012 at 03:02PM

14
#4 - Daumantas / @dbaltrus

05/02/2012 at 05:37PM

14
#5 - Federico Galassi / @federicogalassi

05/02/2012 at 06:46PM

14
#6 - Sebastian Kusnier / @skusnier

05/03/2012 at 12:54PM

14
#7 - Martin Aumueller / @aumuell

05/04/2012 at 01:00PM

14
#8 - Rod Knowlton / @codelahoma

05/05/2012 at 12:53PM

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

05/06/2012 at 05:40AM

14
#10 - kurban / @kurban_mall

05/06/2012 at 09:01AM

14
#11 - Son of Bongo / @bpcode

05/07/2012 at 09:25AM

14
#12 - Kevin Hansen / @coolwebteacher

05/07/2012 at 04:18PM

14
#13 - Sergey / @sav86

05/08/2012 at 07:15PM

14
#14 - mnx / @mnxx

05/10/2012 at 01:40PM

14
#15 - Neil / @spameldoon

05/11/2012 at 06:56PM

14
#16 - Evgeny Persienko / @zzazab

05/11/2012 at 10:34PM

14
#17 - Christian Gaida / @chgaida

05/12/2012 at 09:44AM

14
#18 - Urtica dioica / @udioica

05/13/2012 at 08:16AM

14
#19 - Sunny Klair / @0xSunhay

05/13/2012 at 03:54PM

14
#20 - CyLiu / @CyLiu

05/15/2012 at 07:03AM

14
#21 - Mikael Engström / @mikaelengstrom

05/17/2012 at 02:29AM

14
#22 - Forrest L Norvell / @othiym23

05/17/2012 at 11:39PM

14
#23 - Benjamin Hitov / @benhitov

05/18/2012 at 09:12PM

14
#24 - Vasil Sakarov / @vsakarov

05/21/2012 at 10:10AM

14
#25 - John Whitley / @johnwhitley

05/27/2012 at 11:10AM

14
#26 - Justin Love / @wondible

05/29/2012 at 11:39AM

14
#27 - quintin / @quintinjeannoel

05/30/2012 at 09:57AM

14
#28 - Benoit Mortgat / @Benoit_Mortgat

06/05/2012 at 11:39AM

14
#29 - Benson Kim / @BensonRLA

06/06/2012 at 04:35AM

14
#30 - Paul Gessler / @pdgessler

06/06/2012 at 08:54PM

14
#31 - chikatoike / @chikatoike

06/26/2012 at 08:51AM

14
#32 - John Dahlström / @dahlstromjohn

07/01/2012 at 02:49PM

14
#33 - Raúl Jara / @rauljara

07/06/2012 at 01:48PM

14
#34 - Wei Dai / @clvv42

07/12/2012 at 01:48PM

14
#35 - Heath Matlock / @heathmatlock

07/18/2012 at 05:42AM

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

08/24/2012 at 07:42PM

14
#37 - Conner McDaniel / @connermcd

09/17/2012 at 09:39PM

14
#38 - Vim rocks / @vimrocks

10/09/2012 at 06:11AM

14
#39 - Drew Neil / @nelstrom

11/26/2012 at 04:21PM

14
#40 - Marcin Sza / @coot_

12/05/2012 at 12:18PM

14
#41 - Yann Moisan / @YannMoisan

01/12/2013 at 11:00AM

14
#42 - Koko / @Koko72525913

01/17/2013 at 08:19AM

14
#43 - Trevor Powell / @DoomedBunnies

03/20/2013 at 04:14PM

14
#44 - Marco Hinz / @_mhinz_

05/22/2013 at 03:19PM

14
#45 - Petro Тrouq / @zulolosi

07/04/2013 at 12:36PM

14
#46 - Bradd Szonye / @bszonye

07/13/2013 at 11:35PM

14
#47 - Steve Tjoa / @stevetjoa

07/29/2013 at 03:46PM

14
#48 - Raphael Saunier / @RaphaelSaunier

08/27/2013 at 03:59PM

14
#49 - Casey Dwyer / @caseydwyer

11/04/2013 at 01:42PM

14
#50 - Andrew O'Neill / @AndroidOatmeal

12/18/2013 at 10:11AM

14
#51 - pikaren / @REALpikaren

01/06/2014 at 08:01AM

14
#52 - Joonas Pihlajamaa / @jokkebk

02/24/2014 at 07:20AM

14
#53 - ZorgroZ / @ZorgroZ

04/12/2014 at 12:47PM

14
#54 - John Braxler / @braxler

04/15/2014 at 12:59PM

14
#55 - Ram Tamtam / @ramtamtamtam

07/28/2014 at 03:34AM

15
#56 - Aaron Lake / @metallikop

05/01/2012 at 06:23PM

15
#57 - Tibor Claassen / @codebeige

05/02/2012 at 01:36PM

15
#58 - Nolen Royalty / @NolenRoyalty

05/06/2012 at 03:51PM

15
#59 - Boyance / @Boyance_nl

05/09/2012 at 02:26PM

15
#60 - Gavin Hughes / @gavinhughes

05/13/2012 at 01:09AM

15
#61 - Sean Griffin / @sgrif

08/13/2012 at 07:04PM

15
#62 - Joe Nelson / @begriffs

09/03/2012 at 09:17PM

15
#63 - Tom Cammann / @tea_sea

10/09/2012 at 05:21PM

15
#64 - isayoldchap / @isayoldchap

09/11/2013 at 05:05PM

15
#65 - US Dollar Price / @USDollarPrice

11/05/2013 at 11:33PM

16
#66 - Jonathan Lozinski / @jlozinski

05/01/2012 at 11:12PM

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

05/05/2012 at 09:29PM

16
#68 - VimGolfDzNrSQleot / @VimGolfDzNrSQle

05/10/2012 at 02:25PM

16
#69 - William Dunand / @wdunand

05/10/2012 at 06:48PM

16
#70 - Greg Sabo / @gregsabo

06/20/2012 at 09:42PM

16
#71 - Nipunn Koorapati / @nipunn1313

07/21/2012 at 01:51AM

16
#72 -  Ikhsan Maulana / @ixandidu

08/18/2012 at 08:40AM

16
#73 - Joseph Reddington / @joereddington

08/21/2012 at 01:35AM

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

10/09/2012 at 01:45PM

16
#75 - Matt Boehm / @mattboehm

11/07/2012 at 06:58PM

16
#76 - Rey Wright / @reywright

11/28/2012 at 04:47PM

16
#77 - curist / @curist

07/09/2013 at 01:28AM

16
#78 - Bart of Denver / @bartofdenver

08/12/2013 at 08:20PM

16
#79 - John Papanastasiou / @JohnPapps

08/27/2013 at 05:49AM

16
#80 - Zach Kemp / @zvksf

12/23/2013 at 09:27PM

16
#81 - Caek / @Caek_

07/29/2014 at 04:50AM

16
#82 - Leeren / @Leeren

08/10/2014 at 02:20PM

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

05/01/2012 at 07:51PM

17
#84 - Henri Wiechers / @hwiechers

05/01/2012 at 09:34PM

17
#85 - vall / @provall1

05/04/2012 at 04:28AM

17
#86 - Kerson Hsiao / @KersonHsiao

05/05/2012 at 08:09AM

17
#87 - Mattiassich Ákos / @mattiassicha

05/05/2012 at 10:15PM

17
#88 - Jez Cope / @jezcope

05/06/2012 at 12:28PM

17
#89 - Fabien Pelletier / @FabPelletier

05/06/2012 at 06:25PM

17
#90 - Gavin Rogers / @KC9KVQ

05/07/2012 at 01:09PM

17
#91 - Alex Arnell / @alexarnell

05/07/2012 at 03:54PM

17
#92 - Dave C / @dmlc133

05/10/2012 at 06:08AM

17
#93 - Julio Silva / @9jb

05/14/2012 at 01:27PM

17
#94 - Christopher Brew / @Seph1rothVII

05/18/2012 at 02:27PM

17
#95 - Chris Dahms / @zentrified

05/20/2012 at 01:15PM

17
#96 - Javier Blanco / @jbgutierrez

05/23/2012 at 12:21PM

17
#97 - OMF / @exolon

05/25/2012 at 05:42AM

17
#98 - Øystein Walle / @oysteinwalle

05/31/2012 at 11:22AM

17
#99 - Michaël M. / @asenar

06/02/2012 at 09:14AM

17
#100 - Josh Steiner / @josh_steiner

06/11/2012 at 06:09PM

17
#101 - utopiah / @utopiah

06/13/2012 at 02:56AM

17
#102 - Eric Soderstrom / @eksoderstrom

07/20/2012 at 08:48AM

17
#103 - Glen / @Glen_S

07/24/2012 at 09:04PM

17
#104 - Rahul Savani / @rahul_savani

08/11/2012 at 11:14AM

17
#105 - Michael Limiero / @michaellimiero

08/14/2012 at 08:52AM

17
#106 - Jordan Scales / @prezjordan

08/17/2012 at 07:03PM

17
#107 - mhb / @mhbvim

09/18/2012 at 02:54AM

17
#108 - matthew keesan / @keesan

10/23/2012 at 07:03AM

17
#109 - Nicolas Friedli / @NicolasFriedli

10/28/2012 at 03:47AM

17
#110 - Adam Dratwinski / @adwinsky

11/27/2012 at 12:35PM

17
#111 - Pradeep Kumar / @pradeep6kumar

12/12/2012 at 03:17AM

17
#112 - cj / @cj01101

08/16/2013 at 03:15PM

17
#113 - James / @Dronak

08/29/2013 at 11:12AM

17
#114 - Hachez Floran / @FloranHachez

09/06/2013 at 04:03PM

17
#115 - brett / @brettyukich

09/21/2013 at 09:33PM

17
#116 - Oliver Christ / @0liverChrist

09/27/2013 at 03:27PM

17
#117 - Sam Burk / @smwbk

12/20/2013 at 09:53PM

17
#118 - jgpaiva / @jgpaiva

02/03/2014 at 10:44AM

17
#119 - Quota / @Quotad

02/06/2014 at 01:35AM

17
#120 - Ben Lambeth / @azy2_ben

02/13/2014 at 11:06AM

17
#121 - barnabaguy / @barnabaguy

02/23/2014 at 01:24AM

17
#122 - w1zeman1p / @wizemanip

05/09/2014 at 08:33PM

17
#123 - Kyle Travis / @kmakai

05/16/2014 at 03:59PM

17
#124 - Justin Knag / @justinknag

08/28/2014 at 09:33AM

18
#125 - Daniel Lundin / @danielundin

05/04/2012 at 03:19AM

18
#126 - magdzikk / @magdzikk1

05/18/2012 at 01:56PM

18
#127 - Underhill Labs / @underhilllabs

10/29/2012 at 08:44AM

18
#128 - Saxon Unrue / @joeunrue

11/09/2012 at 05:34AM

18
#129 - Dave Aitken / @actionshrimp

08/27/2013 at 12:07PM

18
#130 - Tj / @yrddy

08/19/2014 at 04:26AM

19
#131 - ise0615 / @ise0615

05/02/2012 at 11:15AM

19
#132 - Eric Weikl / @ericweikl

05/02/2012 at 12:49PM

19
#133 - Jacob Vosmaer / @jacobvosmaer

06/03/2012 at 06:42AM

19
#134 - captain_morgan / @captain_morgan

06/05/2012 at 02:59AM

19
#135 - Tyler Breisacher / @tbreisacher

08/24/2012 at 11:10PM

19
#136 - Arto Vuori / @dhpe

08/31/2012 at 12:43PM

19
#137 - Karun Ramakrishnan / @the_karun

04/08/2013 at 10:58AM

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

07/15/2013 at 03:28AM

19
#139 - Endir / @Endir2

04/18/2014 at 06:43AM

20
#140 - Mac Heller-Ogden / @twosoul

05/01/2012 at 05:52PM

20
#141 - Ricardo Mendes / @locks

05/01/2012 at 06:07PM

20
#142 - Will Furnass / @WillFurnass

05/16/2012 at 07:12AM

20
#143 - Viswanath Sivakumar / @viswanathgs

08/30/2012 at 02:05PM

21
#144 - JustGage / @JustGage

09/03/2012 at 12:24AM

21
#145 - NuM / @NuM314

10/05/2013 at 04:32PM

21
#146 - Alessandro Lisander / @wuiimu

01/06/2014 at 01:38AM

22
#147 - J Paul Daigle / @jpauldaigle

05/23/2012 at 12:06PM

25
#148 - Viktor Jackson / @AntiStalinista

05/04/2012 at 08:16PM

27
#149 - bsjd / @bsjd

05/07/2012 at 10:31AM

34
#150 - Thijs Brobbel / @tiesmaster

05/29/2012 at 05:59AM

77
#151 - Noel Alejandro / @noelrock333

06/22/2012 at 05:55PM