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 4d1a1c36567bac34a9000002

Reformat/Refactor a Golfer Class

A simple case of removing unneeded code and fixing broken indentation.

Start file
class Golfer
     def initialize; end # initialize
  def useless; end;
  
     def self.hello(a,b,c,d)
      puts "Hello #{a}, #{b}, #{c}, #{d}"
   end
end
End file
class Golfer
  def self.hello(*a)
    puts "Hello #{a.join(',')}"
  end
end

View Diff

2,7c2,4
<      def initialize; end # initialize
<   def useless; end;
<   
<      def self.hello(a,b,c,d)
<       puts "Hello #{a}, #{b}, #{c}, #{d}"
<    end
---
>   def self.hello(*a)
>     puts "Hello #{a.join(',')}"
>   end

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 1397 remaining solutions by signing in and submitting your own entry
#1398 Patrick Muldoon / @d00n - Score: 206 - 12/29/10 @ 15:12
<Esc>:<Up><Up><Up><Up><Up>g.<BS>/.*def.$<BS>*end.*/d<CR>:v/\S/f<BS>d<CR>fai*<Esc><Right><Right>cf))<Esc><Down><Left>i.join(',')<Esc>lldf:df"a"<Esc>=<Esc><Esc><BS><Up><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>xxxxxi  <Down><Down><Esc>x<Up><Right>xx<Esc>:wq<CR>

0 comments


Created by: @igrigorik

1398 active golfers, 5692 entries

Leaderboard (lowest score wins):
38
#541 - Tim Uruski / @timuruski

02/08/2012 at 04:42AM

38
#542 - Michał Wróbel / @sparrovv_

03/12/2012 at 09:04PM

38
#543 - David Xia / @davidxia_

03/24/2012 at 12:38AM

38
#544 - bray / @bray

05/23/2012 at 02:54AM

38
#545 - Daniel Lundin / @danielundin

06/11/2012 at 02:59PM

38
#546 - Enrique Paredes / @iknite

08/18/2012 at 03:07PM

38
#547 - Greg McClure / @blackvoodoo

01/12/2013 at 08:29PM

38
#548 - Mikko Haavisto / @mhaavisto

02/28/2013 at 07:21PM

38
#549 - Sebastian Heil / @sebokopter

03/16/2013 at 03:31AM

38
#550 - smeier / @smeier

05/28/2013 at 07:28PM

38
#551 - James / @Dronak

08/29/2013 at 09:15PM

38
#552 - Joey Twiddle / @joeytwiddle

09/01/2013 at 01:53AM

38
#553 - hiroaki yasutomo / @kaminaly

09/06/2013 at 01:53AM

38
#554 - Rafa Garcia / @fafa

09/17/2013 at 08:53AM

38
#555 - Chris Ford / @ctford

10/20/2013 at 09:31AM

38
#556 - Matthew Kirk / @mjkirk

12/18/2013 at 05:19PM

38
#557 - Tom Richards / @the_tomrichards

12/20/2013 at 08:09PM

38
#558 - pikaren / @REALpikaren

12/21/2013 at 08:22AM

38
#559 - Thiago Prado / @5k1pp3r

12/25/2013 at 06:08PM

38
#560 - John / @BerlinSchneider

01/18/2014 at 09:05PM

38
#561 - Daniel Jonsson / @DanielJonss

01/21/2014 at 04:33PM

38
#562 - André / @Joschasa

01/22/2014 at 03:05PM

38
#563 - Jakob Lundberg / @JakobLundberg

01/31/2014 at 11:02AM

38
#564 - Ali El Amine / @Allouch95

02/02/2014 at 11:52AM

38
#565 - Joshua Tacoma / @yellowseed

02/02/2014 at 03:44PM

38
#566 - Ri / @riateche

03/02/2014 at 01:07PM

38
#567 - Lasse Dalegaard / @ldalegaard

07/07/2014 at 06:10AM

38
#568 - Michi Loro / @michiloro

07/08/2014 at 11:45AM

38
#569 - Oleg Tsymbalyuk / @oleg_tc

07/11/2014 at 05:17AM

38
#570 - Daniel / @dazn159

08/15/2014 at 09:55PM