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 9v0066fbf17000000000042c

CaN yOuR ViM dO ThAt? #1

Tsoding's famous "Can your Vim do that?" https://youtu.be/Bafo3hhheHU?si=DfcT4sUEMTSAevnx&t=1091

Start file
void platform_fill_rect(i32 x, i32 y, i32 w, i32 h, u32 color)
{
}

void platform_stroke_rect(i32 x, i32 y, i32 w, i32 h, u32 color)
{
}

void platform_fill_text(i32 x, i32 y, const char *text, u32 size, u32 color, Align align)
{
}

void platform_stroke_line(i32 x1, i32 y1, i32 x2, i32 y2, u32 color)
{
}

void platform_panic(const char *file_path, i32 line, const char *message)
{
}

void platform_log(const char *message)
{
}

End file
void platform_fill_rect(i32 x, i32 y, i32 w, i32 h, u32 color)
{
    assert(0 && "TODO: platform_fill_rect");
}

void platform_stroke_rect(i32 x, i32 y, i32 w, i32 h, u32 color)
{
    assert(0 && "TODO: platform_stroke_rect");
}

void platform_fill_text(i32 x, i32 y, const char *text, u32 size, u32 color, Align align)
{
    assert(0 && "TODO: platform_fill_text");
}

void platform_stroke_line(i32 x1, i32 y1, i32 x2, i32 y2, u32 color)
{
    assert(0 && "TODO: platform_stroke_line");
}

void platform_panic(const char *file_path, i32 line, const char *message)
{
    assert(0 && "TODO: platform_panic");
}

void platform_log(const char *message)
{
    assert(0 && "TODO: platform_log");
}

View Diff

2a3
>     assert(0 && "TODO: platform_fill_rect");
6a8
>     assert(0 && "TODO: platform_stroke_rect");
10a13
>     assert(0 && "TODO: platform_fill_text");
14a18
>     assert(0 && "TODO: platform_stroke_line");
18a23
>     assert(0 && "TODO: platform_panic");
22a28
>     assert(0 && "TODO: platform_log");

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 117 remaining solutions by signing in and submitting your own entry
#118 MarkBroadberry / @MarkBroadberry - Score: 144 - 03/25/26 @ 09:14
jo    assert(0 && "TODO: ");<Esc>yy4jp4jp4jp.u4jp4jpkkyiw/:<CR>lp/pan<CR>yiwjjf:lp/line<CR>yiwjjf:lp/textj<BS><CR>yiwjjf:lp/ke_re<CR>yiwjjf:lp/fill<CR>Nyiwjj:<Esc><Esc>f:lp<Esc>:wq<CR>

0 comments


Created by: @Vivida1

118 active golfers, 297 entries

Leaderboard (lowest score wins):
48
#91 - Purple-Chicken / @Purple-Chicken

01/23/2026 at 05:49PM

49
#92 - Brett Collins / @brett-collins_cbhq

10/25/2024 at 12:32AM

49
#93 - thedvd98 / @thedvd98

11/17/2024 at 09:45PM

49
#94 - WestonZavadil-Personal / @WestonZavadil-Personal

04/28/2026 at 02:08AM

50
#95 - Brian Curless / @bwcurless

02/12/2025 at 06:19PM

50
#96 - enaygit / @enaygit

02/15/2025 at 10:25PM

50
#97 - Dani Bengl / @cb341

12/22/2025 at 09:42PM

50
#98 - Jean-Valery / @Jvaxx

03/26/2026 at 12:53PM

51
#99 - Aaron Hunt / @ach5910

10/15/2025 at 11:18PM

51
#100 - Mohammed Tangestani / @tangestani

01/05/2026 at 02:21AM

51
#101 - Frederik F / @FrederikFrederiksenMancofi

01/05/2026 at 10:04AM

51
#102 - Priyanshu Katuwal / @priyanshulxiv

06/13/2026 at 04:31AM

52
#103 - Alexander Dyadyushenko / @GooKv

04/05/2025 at 02:32PM

52
#104 - rellarda / @rellarda

04/27/2025 at 06:05PM

52
#105 - Youri Seichter / @medizinmensch

11/20/2025 at 12:20PM

52
#106 - Shreyas Ravi / @shreyasravi320

05/12/2026 at 07:10PM

53
#107 - nduncan227 / @nduncan227

04/26/2025 at 01:17AM

53
#108 - wsulcs / @wsulcs

10/19/2025 at 07:40PM

53
#109 - . / @bigsmoke3567

04/21/2026 at 09:38PM

54
#110 - jamisonrobey / @jamisonrobey

07/29/2026 at 03:28AM

56
#111 - Italo Silva / @oyarsa

03/26/2026 at 06:04PM

57
#112 - Sean Morris / @SeanJMorris

02/10/2026 at 05:03AM

58
#113 - SRINIVASU SALADI / @SRINIVASUS22587

03/25/2025 at 05:11AM

60
#114 - Jesper Wallengren / @Qroop

06/25/2025 at 10:44AM

62
#115 - Isaac Morrow / @Toranian

08/30/2025 at 05:26PM

71
#116 - Bader Almazmumi / @almazmumi

01/27/2025 at 12:05PM

83
#117 - Adriano / @AdrianoAla

07/28/2025 at 12:35PM

144
#118 - MarkBroadberry / @MarkBroadberry

03/25/2026 at 09:14AM