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 50b5266f448d770002000106

Readable Rubyhash

Rubyists talk about being cutting edge but how many are using 1.9 in production? Time to convert those verbose 1.8 hashes in to symbolic, succinct 1.9 beauties!

Start file
{:a=>1,:b=>2,:c=>3}
End file
{
  a: 1,
  b: 2,
  c: 3
}

View Diff

1c1,5
< {:a=>1,:b=>2,:c=>3}
---
> {
>   a: 1,
>   b: 2,
>   c: 3
> }

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 58 remaining solutions by signing in and submitting your own entry
#59 Rolinh / @Rolinh42 - Score: 30 - 03/14/14 @ 07:28
:s/:/\r  /g|%s/=>/: /g<CR>3wi<CR><Esc>ZZ

0 comments

#60 Zach Kemp / @zvksf - Score: 31 - 12/13/13 @ 23:21
:%s;:;\r  ;g<CR>qalR: <Esc>-q2@a%i<CR><Esc>ZZ

0 comments

#61 w1zeman1p / @wizemanip - Score: 32 - 05/10/14 @ 04:03
:%s/:\(\w\)=>/\r  \1: /g<CR>A<BS><CR>}<Esc>ZZ

0 comments

#62 Eric Andres / @eric_m_andres - Score: 37 - 12/04/12 @ 21:37
:%s/:/\r/g<CR>f3a<CR><Esc>2G<C-V>jjI  <Esc>f=<C-V>ljjc: <Esc>ZZ

0 comments

#63 Jesse Nazario / @JesseNazario - Score: 37 - 04/19/13 @ 18:58
a<CR><BS>  <Esc>f,a<CR><Esc>;.f]f}i<CR><Esc>kw<C-V>2kdpl<C-V>2jlc <Esc>ZZ

0 comments

#64 Joshua Travis / @jktravis - Score: 38 - 11/28/12 @ 02:29
:s/:/\r/g<CR>$i<CR><Esc>kI  <Esc>k.k.:%s/=>:<BS>/: /<CR>ZZ

0 comments

#65 Ravi S Sinha / @ambidextrousTx - Score: 38 - 11/28/12 @ 23:49
:s/:/\r:/g<CR>$i<CR><Esc>kqaxpI  <Esc>f=xR <Esc>0kq2@aZZ

0 comments

#66 Oliver Christ / @0liverChrist - Score: 39 - 10/04/13 @ 22:13
a<CR><BS><End><Left><CR><Up><Esc>qaxpa <Del><Del><Right><Right><CR>q<BS><Esc>q@a@addk<C-V>kkI  <Esc>ZZ

0 comments

#67 Tomasz Jureczko / @codehaha - Score: 41 - 11/27/12 @ 21:01
:s/[{,]/&\r/g<CR>:%s/:\(.\)=>/  \1: /<CR>$i<CR><Esc>ZZ

0 comments

#68 Vimgolf Pikob / @vimgolfpikob - Score: 42 - 12/02/12 @ 19:00
:s/:\(.\)=>\(.\),\=/<C-V><CR>  \1: \2,/g<CR>f,r<CR>z<BS>ZZ

0 comments

#69 Jim Jones / @zimzumzam - Score: 46 - 08/14/13 @ 10:23
:s/:/\r/g<CR>$$i<CR><Esc>kI  <Esc>k.jkk.:%s/=>:<BS>/: /<CR>:<BS><C-Z>:wq<CR>

0 comments

#70 One More Anonymous / @anonymous_joe - Score: 49 - 04/16/13 @ 13:12
:%s/:/<C-V><CR>/g<CR>:5<BS>%s/=>/: /g<CR><C-V>kkI  <Esc>kllljjjjf}i<CR><Esc>:wq<CR>

0 comments

#71 Scott Harvey / @scottharveyco - Score: 54 - 11/29/12 @ 09:23
a<CR><BS>  <Esc>f2hhhhi<CR><Esc>2f:i<CR><Esc>f}i<CR><Esc><Esc>:%s/://g<CR><Esc>:%s/=>/: /g<CR><Esc>:wq<CR>

0 comments

#72 A.B / @_a0b_ - Score: 71 - 04/30/13 @ 18:51
:<Up>set shiftwidth=2<CR>=G:<Up><Down>%s/:/\r/g<CR>g_i<Esc>a<CR><Esc>:<Up><Up><Down><Left><Left><Left><Left><Left><BS>=><Right><Right><Right><BS><BS>: <CR>gg=G:w<BS>wq<CR>

0 comments

#73 Chris Maguire / @chriswmaguire - Score: 104 - 11/28/12 @ 15:01
a<CR><<BS><Esc><<CR><Esc><BS><BS>jjx  hhi  <Esc>llllhlhhhxa:<Esc>lxxi <Esc>lll<CR><CR>i<CR>x<BS><Esc>lxlxxi: <Esc>lll<CR>i<CR><Esc>xhxxi  <Esc>ll:<Esc>i: x<BS><BS><Esc><Esc>lxx <BS>i <Esc>lli<CR><Esc><Esc>:wq<CR>

0 comments

Created by: @VimLondon

73 active golfers, 202 entries

Leaderboard (lowest score wins):
23
#1 - Adelar S. Queiróz / @adelarsq

11/28/2012 at 10:58PM

23
#2 - Harry Garrood / @hdgarrood

12/03/2012 at 11:34PM

23
#3 - Petro Тrouq / @zulolosi

06/07/2013 at 09:06PM

24
#4 - Conner McDaniel / @connermcd

11/28/2012 at 04:40AM

24
#5 - a24f0600 / @a24f0600

11/28/2012 at 04:41PM

24
#6 - Urtica dioica / @udioica

12/12/2012 at 07:58AM

24
#7 - John Braxler / @braxler

05/06/2014 at 06:15PM

24
#8 - alex scott / @4l3xsc0tt

07/02/2014 at 01:41PM

25
#9 - Vasil Sakarov / @vsakarov

11/30/2012 at 01:07AM

26
#10 - Daniel Lundin / @danielundin

11/28/2012 at 11:57AM

26
#11 - Scott McGinness / @scottie_000

11/29/2012 at 01:32PM

26
#12 - Hubba / @HubbaBubbaFett

11/29/2012 at 09:26PM

26
#13 - 無ん垢の叫び / @john_ababa

12/02/2012 at 04:30PM

26
#14 - Kerson Hsiao / @KersonHsiao

03/29/2013 at 10:44AM

26
#15 - Tyler / @tylerbindon

04/03/2013 at 04:29AM

26
#16 - Trevor Powell / @DoomedBunnies

04/11/2013 at 03:05AM

26
#17 - Marco Hinz / @_mhinz_

05/26/2013 at 12:22PM

26
#18 - Bradd Szonye / @bszonye

07/14/2013 at 06:51AM

27
#19 - Adam Dratwinski / @adwinsky

11/27/2012 at 09:07PM

27
#20 - mattgibb / @mattgibb

11/27/2012 at 09:10PM

27
#21 - Marcin Sza / @coot_

11/28/2012 at 02:04AM

27
#22 - Nick Bakkegaard / @Bakkemand

11/28/2012 at 01:44PM

27
#23 - Tom Cammann / @tea_sea

11/28/2012 at 05:07PM

27
#24 - Jason Wolf / @zephyr_wolf

11/28/2012 at 07:49PM

27
#25 - meatcar / @meatcar

11/28/2012 at 08:04PM

27
#26 - David Barnett / @mu_mind

11/29/2012 at 10:38AM

27
#27 - Jordan Eldredge / @captbaritone

12/01/2012 at 05:40AM

27
#28 - Django Janny / @keltroth

12/08/2012 at 04:34PM

27
#29 - DJ LoBraico / @pygatea

12/11/2012 at 11:13PM

27
#30 - Lari / @larifariman

12/28/2012 at 12:27AM

27
#31 - martha / @hellomartha

01/17/2013 at 02:44PM

27
#32 - brett / @brettyukich

09/22/2013 at 01:00PM

27
#33 - Clement Kinder / @ClementKinder

03/06/2014 at 10:07AM

27
#34 - Joonas Pihlajamaa / @jokkebk

03/07/2014 at 12:35PM

27
#35 - Nic West / @west_nic

06/21/2014 at 03:09PM

28
#36 - Felix Ingram / @lllamaboy

11/27/2012 at 09:13PM

28
#37 - Vim London / @VimLondon

11/27/2012 at 09:15PM

28
#38 - Akira Matsuda / @a_matsuda

11/28/2012 at 07:23AM

28
#39 - Pawel Obrok / @mrYapee

11/28/2012 at 09:19AM

28
#40 - n0nick / @n0nick

12/17/2012 at 04:29PM

28
#41 - Benjamin Thomas / @PryFlack

01/06/2013 at 01:28AM

28
#42 - Daniel Jonsson / @DanielJonss

01/18/2013 at 12:49PM

28
#43 - Chris Trombley / @ctrombley

01/28/2013 at 06:26PM

28
#44 - Steve Tjoa / @stevetjoa

02/05/2013 at 06:26AM

28
#45 - Ram Tamtam / @ramtamtamtam

07/02/2014 at 10:58AM

28
#46 - James / @Dronak

09/21/2014 at 02:21AM

29
#47 - Kerry Burke / @kurver

11/28/2012 at 07:20AM

29
#48 - Pete Johns / @johnsyweb

11/28/2012 at 07:28PM

29
#49 - Lieven Keersmaekers / @LievenKeersmaek

11/30/2012 at 04:06PM

29
#50 - Glen / @Glen_S

11/30/2012 at 11:11PM

29
#51 - Panupan S. / @lionpeal

01/11/2013 at 11:58PM

29
#52 - cj / @cj01101

08/17/2013 at 04:08AM

29
#53 - Jonathan Kim / @jonnykim

08/27/2013 at 07:53PM

29
#54 - Sam Burk / @smwbk

12/22/2013 at 05:43PM

29
#55 - Mauro Persano / @fzort

11/16/2014 at 01:30PM

30
#56 - Claudio Ortolina / @cloud8421

11/27/2012 at 09:03PM

30
#57 - Chase Stubblefield / @sterlingchase

04/29/2013 at 05:28AM

30
#58 - Woojung Kim 김우중 / @_kimwz

07/15/2013 at 10:35AM

30
#59 - Rolinh / @Rolinh42

03/14/2014 at 07:28AM

31
#60 - Zach Kemp / @zvksf

12/13/2013 at 11:21PM

32
#61 - w1zeman1p / @wizemanip

05/10/2014 at 04:03AM

37
#62 - Eric Andres / @eric_m_andres

12/04/2012 at 09:37PM

37
#63 - Jesse Nazario / @JesseNazario

04/19/2013 at 06:58PM

38
#64 - Joshua Travis / @jktravis

11/28/2012 at 02:29AM

38
#65 - Ravi S Sinha / @ambidextrousTx

11/28/2012 at 11:49PM

39
#66 - Oliver Christ / @0liverChrist

10/04/2013 at 10:13PM

41
#67 - Tomasz Jureczko / @codehaha

11/27/2012 at 09:01PM

42
#68 - Vimgolf Pikob / @vimgolfpikob

12/02/2012 at 07:00PM

46
#69 - Jim Jones / @zimzumzam

08/14/2013 at 10:23AM

49
#70 - One More Anonymous / @anonymous_joe

04/16/2013 at 01:12PM

54
#71 - Scott Harvey / @scottharveyco

11/29/2012 at 09:23AM

71
#72 - A.B / @_a0b_

04/30/2013 at 06:51PM

104
#73 - Chris Maguire / @chriswmaguire

11/28/2012 at 03:01PM