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 591903ff3060ed0b32000007

Adam's challenge

Change both normal to bold and 4 by 2. Adam Wathan challenge this on twitter . He did it in 11 keystrokes on Sublime.

Start file
<div>
    <span class="text-base text-dark wt-normal">
        @icon('line-graph', 'icon-sm text-dark-faint m-r-4') ${{ number_format($product->totalRevenue() / 100) }}
    </span>
    <span class="text-base text-dark wt-normal">
        @icon('users', 'icon-sm text-dark-faint m-r-4') {{ $product->totalPurchases() }}
    </span>
</div>
End file
<div>
    <span class="text-base text-dark wt-bold">
        @icon('line-graph', 'icon-sm text-dark-faint m-r-2') ${{ number_format($product->totalRevenue() / 100) }}
    </span>
    <span class="text-base text-dark wt-bold">
        @icon('users', 'icon-sm text-dark-faint m-r-2') {{ $product->totalPurchases() }}
    </span>
</div>

View Diff

2,3c2,3
<     <span class="text-base text-dark wt-normal">
<         @icon('line-graph', 'icon-sm text-dark-faint m-r-4') ${{ number_format($product->totalRevenue() / 100) }}
---
>     <span class="text-base text-dark wt-bold">
>         @icon('line-graph', 'icon-sm text-dark-faint m-r-2') ${{ number_format($product->totalRevenue() / 100) }}
5,6c5,6
<     <span class="text-base text-dark wt-normal">
<         @icon('users', 'icon-sm text-dark-faint m-r-4') {{ $product->totalPurchases() }}
---
>     <span class="text-base text-dark wt-bold">
>         @icon('users', 'icon-sm text-dark-faint m-r-2') {{ $product->totalPurchases() }}

Solutions by @JoelMeyerHamme:

Unlock 6 remaining solutions by signing in and submitting your own entry
Created by: @TresErresCo

270 active golfers, 984 entries

Solutions by @JoelMeyerHamme:
18
#30 - Joel Meyer-Hamme / @JoelMeyerHamme

06/18/2017 at 02:24PM

18
#>30 - Joel Meyer-Hamme / @JoelMeyerHamme

06/18/2017 at 02:25PM

19
#>110 - Joel Meyer-Hamme / @JoelMeyerHamme

06/18/2017 at 02:22PM

21
#>146 - Joel Meyer-Hamme / @JoelMeyerHamme

06/18/2017 at 02:20PM

22
#>174 - Joel Meyer-Hamme / @JoelMeyerHamme

06/18/2017 at 02:18PM

23
#>210 - Joel Meyer-Hamme / @JoelMeyerHamme

06/18/2017 at 02:16PM