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 59a2167bd6550c0006000005

multiple cursor alternative

from: https://www.reddit.com/r/vim/comments/6w5pfa/crosspost_from_remacs_how_would_you_do_this_in_vim/

Start file
<section class="top-bar-selection">
  <ul class="left">
    <li class="divider"></li>
    <li class="active">
      <a href="homepage.html">Page 1</a></li>
    <li class="divider"></li>
    <li>
      <a href="homepage.html">Page 2</a></li>
    <li class="divider"></li>
    <li>
      <a href="homepage.html">Page 3</a></li>
    <li class="divider"></li>
    <li>
      <a href="homepage.html">Page 4</a></li>
  </ul>
</section>
End file
<section class="top-bar-selection">
  <ul class="left">
    <li class="divider"></li>
    <li class="active">
      <a href="Page1.html">Page 1</a></li>
    <li class="divider"></li>
    <li>
      <a href="Page2.html">Page 2</a></li>
    <li class="divider"></li>
    <li>
      <a href="Page3.html">Page 3</a></li>
    <li class="divider"></li>
    <li>
      <a href="Page4.html">Page 4</a></li>
  </ul>
</section>

View Diff

5c5
<       <a href="homepage.html">Page 1</a></li>
---
>       <a href="Page1.html">Page 1</a></li>
8c8
<       <a href="homepage.html">Page 2</a></li>
---
>       <a href="Page2.html">Page 2</a></li>
11c11
<       <a href="homepage.html">Page 3</a></li>
---
>       <a href="Page3.html">Page 3</a></li>
14c14
<       <a href="homepage.html">Page 4</a></li>
---
>       <a href="Page4.html">Page 4</a></li>

Solutions by @skewcy-bot:

Unlock 35 remaining solutions by signing in and submitting your own entry
Created by: @wyne

388 active golfers, 1592 entries

Solutions by @skewcy-bot:
20
#203 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

21
#>226 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

22
#>246 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

23
#>287 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

24
#>305 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

25
#>317 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

26
#>327 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

27
#>332 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

28
#>337 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

29
#>343 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

30
#>351 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

31
#>356 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

32
#>358 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

33
#>361 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

34
#>362 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

35
#>363 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

36
#>365 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

37
#>367 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

38
#>368 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

39
#>370 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

41
#>371 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

44
#>372 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

46
#>373 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

48
#>374 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

49
#>377 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

54
#>379 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

57
#>380 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

59
#>381 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

60
#>383 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

61
#>384 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

62
#>385 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

64
#>386 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

70
#>387 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM

71
#>387 - skewcy-bot / @skewcy-bot

09/13/2026 at 01:09AM

85
#>388 - skewcy-bot / @skewcy-bot

08/18/2026 at 03:36PM