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 5d7f565deac0df000cfc2154

Line under headers

Put a line under each header, and remove the other markdown formatting.

Start file
## Headers

## To

## Underline
End file
Headers
-------

Are
---

Underlined
----------

View Diff

1c1,2
< ## Headers
---
> Headers
> -------
3c4,5
< ## To
---
> Are
> ---
5c7,8
< ## Underline
---
> Underlined
> ----------

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 471 remaining solutions by signing in and submitting your own entry
#472 Pavlo Hadzheha / @PHadzheha - Score: 133 - 02/19/21 @ 10:13
:<BS>?<BS>kjjwcwAre<Esc>kkjjjjAd<Esc>:%s/\(##\s\)\(.\+\)/\=submatch(2) . "\r" . rea<BS>peat(submatch(2)<C-Left><C-Left><C-Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Left>str_<BS><BS><BS><BS>'-', strchars*<BS>(<Right><C-Right>))/<CR>:wq<CR>

0 comments


Created by: @rax0m

472 active golfers, 1918 entries

Leaderboard (lowest score wins):
38
#391 - cínicoycansino / @pgv958

09/30/2019 at 02:10PM

38
#392 - xjkhst / @xjkhst

10/19/2019 at 11:36AM

38
#393 - およねさん / @yuukikun31

12/05/2019 at 01:11AM

38
#394 - Daniel Amkær Sørensen / @AmkRensen

01/31/2020 at 01:57PM

38
#395 - Sander Vanhove / @SanderVhove

02/05/2020 at 01:03PM

38
#396 - vtls / @vtls16

03/07/2020 at 11:43AM

38
#397 - Fnord Everywhere / @FnordE

05/13/2020 at 09:18AM

38
#398 - Puj / @MrPuj

06/15/2020 at 02:13PM

38
#399 - Daniel Latzer / @tournqat

12/02/2020 at 05:25PM

38
#400 - yancy / @yancy_dong

09/17/2021 at 08:49AM

39
#401 - Zviad Mgaloblishvili / @ZMgaloblishvili

10/10/2019 at 07:54PM

39
#402 - Jeremy Griffin / @jerrymcgriffo

10/12/2019 at 09:20PM

39
#403 - damien / @GreatTestyTest

11/10/2019 at 08:08PM

39
#404 - wsg / @wsg31986835

11/28/2019 at 04:33PM

39
#405 - afk / @Allan_FK

01/15/2020 at 12:56PM

39
#406 - Emil / @emilklindt

02/05/2020 at 12:12PM

39
#407 - Zachary Lee / @abstractlyZach

04/25/2020 at 05:00PM

39
#408 - Gaulish_Coder / @GaulishC

05/13/2020 at 09:37AM

40
#409 - Wojciech Jurkowski / @yierzy

09/22/2019 at 07:56PM

40
#410 - vlad / @vlad_chub

12/07/2019 at 06:48AM

40
#411 - Larry Adames / @LarryAdames

01/19/2020 at 01:11AM

40
#412 - Tom Aisthorpe / @tomaisthorpe

01/30/2020 at 03:40PM

40
#413 - Strages / @Strages2k

02/23/2020 at 02:22AM

40
#414 - Nicolas Daval / @ndaval

04/30/2020 at 12:15PM

40
#415 - dotvimrc / @dotvimrc1

05/16/2020 at 04:34PM

40
#416 - drGsus / @drGsus

07/25/2020 at 06:52AM

40
#417 - Thiago Becker 😷 / @beckert

08/06/2020 at 04:52PM

41
#418 - m1t0z / @m1t0z1

09/25/2019 at 06:48PM

41
#419 - Jordan Joe Watson / @jordanjoewatson

12/01/2020 at 09:12PM

42
#420 - ~• Isaac [5] •~ / @isac_frusgoffer

10/17/2019 at 10:58PM