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

Create json from a .env file

A simple everyday task.

Start file
# API Settings
JOBS_API_URL=http://localhost:5000
JOBS_BASE_URL=http://localhost:8000
SCRAPERS_BASE_URL=http://localhost:9900

# Database Settings
JOBS_DATABASE_URI=mongodb://mongouser:mongopassword@127.0.0.1:27017/app

# Redis Settings
JOBS_REDIS_DSN=redis://127.0.0.1:6000

# Data API
DATA_BASE_URL=http://127.0.0.1:8900

# Minio config
JOBS_MINIO_SECURE=false
JOBS_MINIO_ACCESS_KEY=miniouser
JOBS_MINIO_SECRET_KEY=miniosecret
JOBS_MINIO_HOST=127.0.0.1:9500
JOBS_MINIO_DEFAULT_BUCKET=jobs
JOBS_MINIO_REGION=us-west-1
JOBS_MINIO_CREATE_BUCKETS=false
JOBS_MINIO_RESULTS_FORMAT=results/{job.id}.json
JOBS_MINIO_ARGUMENTS_FORMAT=arguments/{job.id}.json
JOBS_MINIO_SERVICES_PATH=services/{job.service.bucket_name}
JOBS_MINIO_LOGS_BUCKET=

# RabbitMQ Settings
JOBS_RABBITMQ_URI=amqp://rabbitmquser:rabbitmqpassword@127.0.0.1:5672

# Package registry
REGISTRY_TOKEN=g_dka000111222333444

LOG_FORMAT=text

# Slack notifications
SLACK_TOKEN=
LOGGING_CHANNEL=

# Metadata API
TEST_METADATA_BASE_URL=http://127.0.0.1:8801
End file
{
    "JOBS_API_URL": "http://localhost:5000",
    "JOBS_BASE_URL": "http://localhost:8000",
    "SCRAPERS_BASE_URL": "http://localhost:9900",
    "JOBS_DATABASE_URI": "mongodb://mongouser:mongopassword@127.0.0.1:27017/app",
    "JOBS_REDIS_DSN": "redis://127.0.0.1:6000",
    "DATA_BASE_URL": "http://127.0.0.1:8900",
    "JOBS_MINIO_SECURE": "false",
    "JOBS_MINIO_ACCESS_KEY": "miniouser",
    "JOBS_MINIO_SECRET_KEY": "miniosecret",
    "JOBS_MINIO_HOST": "127.0.0.1:9500",
    "JOBS_MINIO_DEFAULT_BUCKET": "jobs",
    "JOBS_MINIO_REGION": "us-west-1",
    "JOBS_MINIO_CREATE_BUCKETS": "false",
    "JOBS_MINIO_RESULTS_FORMAT": "results/{job.id}.json",
    "JOBS_MINIO_ARGUMENTS_FORMAT": "arguments/{job.id}.json",
    "JOBS_MINIO_SERVICES_PATH": "services/{job.service.bucket_name}",
    "JOBS_MINIO_LOGS_BUCKET": "",
    "JOBS_RABBITMQ_URI": "amqp://rabbitmquser:rabbitmqpassword@127.0.0.1:5672",
    "REGISTRY_TOKEN": "g_dka000111222333444",
    "LOG_FORMAT": "text",
    "SLACK_TOKEN": "",
    "LOGGING_CHANNEL": "",
    "TEST_METADATA_BASE_URL": "http://127.0.0.1:8801"
}

View Diff

1,41c1,25
< # API Settings
< JOBS_API_URL=http://localhost:5000
< JOBS_BASE_URL=http://localhost:8000
< SCRAPERS_BASE_URL=http://localhost:9900
< 
< # Database Settings
< JOBS_DATABASE_URI=mongodb://mongouser:mongopassword@127.0.0.1:27017/app
< 
< # Redis Settings
< JOBS_REDIS_DSN=redis://127.0.0.1:6000
< 
< # Data API
< DATA_BASE_URL=http://127.0.0.1:8900
< 
< # Minio config
< JOBS_MINIO_SECURE=false
< JOBS_MINIO_ACCESS_KEY=miniouser
< JOBS_MINIO_SECRET_KEY=miniosecret
< JOBS_MINIO_HOST=127.0.0.1:9500
< JOBS_MINIO_DEFAULT_BUCKET=jobs
< JOBS_MINIO_REGION=us-west-1
< JOBS_MINIO_CREATE_BUCKETS=false
< JOBS_MINIO_RESULTS_FORMAT=results/{job.id}.json
< JOBS_MINIO_ARGUMENTS_FORMAT=arguments/{job.id}.json
< JOBS_MINIO_SERVICES_PATH=services/{job.service.bucket_name}
< JOBS_MINIO_LOGS_BUCKET=
< 
< # RabbitMQ Settings
< JOBS_RABBITMQ_URI=amqp://rabbitmquser:rabbitmqpassword@127.0.0.1:5672
< 
< # Package registry
< REGISTRY_TOKEN=g_dka000111222333444
< 
< LOG_FORMAT=text
< 
< # Slack notifications
< SLACK_TOKEN=
< LOGGING_CHANNEL=
< 
< # Metadata API
< TEST_METADATA_BASE_URL=http://127.0.0.1:8801
---
> {
>     "JOBS_API_URL": "http://localhost:5000",
>     "JOBS_BASE_URL": "http://localhost:8000",
>     "SCRAPERS_BASE_URL": "http://localhost:9900",
>     "JOBS_DATABASE_URI": "mongodb://mongouser:mongopassword@127.0.0.1:27017/app",
>     "JOBS_REDIS_DSN": "redis://127.0.0.1:6000",
>     "DATA_BASE_URL": "http://127.0.0.1:8900",
>     "JOBS_MINIO_SECURE": "false",
>     "JOBS_MINIO_ACCESS_KEY": "miniouser",
>     "JOBS_MINIO_SECRET_KEY": "miniosecret",
>     "JOBS_MINIO_HOST": "127.0.0.1:9500",
>     "JOBS_MINIO_DEFAULT_BUCKET": "jobs",
>     "JOBS_MINIO_REGION": "us-west-1",
>     "JOBS_MINIO_CREATE_BUCKETS": "false",
>     "JOBS_MINIO_RESULTS_FORMAT": "results/{job.id}.json",
>     "JOBS_MINIO_ARGUMENTS_FORMAT": "arguments/{job.id}.json",
>     "JOBS_MINIO_SERVICES_PATH": "services/{job.service.bucket_name}",
>     "JOBS_MINIO_LOGS_BUCKET": "",
>     "JOBS_RABBITMQ_URI": "amqp://rabbitmquser:rabbitmqpassword@127.0.0.1:5672",
>     "REGISTRY_TOKEN": "g_dka000111222333444",
>     "LOG_FORMAT": "text",
>     "SLACK_TOKEN": "",
>     "LOGGING_CHANNEL": "",
>     "TEST_METADATA_BASE_URL": "http://127.0.0.1:8801"
> }

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 407 remaining solutions by signing in and submitting your own entry
#408 Jason-Lee3 / @Jason-Lee3 - Score: 1378 - 07/16/26 @ 06:53
ddjjjddddjjkddddjjkddddjddddjjjjjjjjjjjjkkjjkddddjjkddddjddjddjkddjjddddkkkkkkkkkkkkkkkkkkkkkkki'<BS>{<CR><Esc>jjjjjjjjjjjjjjjjjjjjjjjjjo}<Esc>kkkkkkkkkkkkkkkkkkkkkkki"<Esc>lllllllllllla"<Esc>bbi    <Esc>llwllwhhhhi"<Esc>llwlwllEa"<Esc>jBi    #<S-><BS>"<Esc>wWkWwwi"<Esc>a<Esc>la"<Esc>Ea"<Esc><Esc>kkja,<Esc>ja,<Esc>jBi#<BS>    "<Esc>lwlhi"<Esc>lli"<Esc>lEa",<Esc>jbBi"<BS>    "<Esc>jkEa"<Esc>Bllwlhi"<Esc>lli"<Esc>EjBi    #<BS>"<Esc>lwi"<Esc>lla<BS>r<BS>"r<Esc>lEa",<Esc>kEa.<Esc><BS>la<BS>,<Esc>jjBi    <Esc>li"<Esc>llwi"<Esc>lli"<Esc>lWkEa",<Esc>ja",<Esc>jEa",<Esc>jEklla<Esc>lla",<Esc>ja",<Esc>ja",<Esc>ja",<Esc>jlla",<Esc>jEa",<Esc>lljllla",<Esc>jEa",<Esc>ja"",<Esc>jjkEa",<Esc>ja",<Esc>ja",<Esc>ja"",<Esc>kkkkkkkkkkkkkkkkjjkkkkkjjjkjjjjjjjjjjjjjjjjjjlla"",<Esc>jEa",<BS><Esc>Bi    <Esc>kkkkkkkkkkkkkkkkhhhi    <Esc>jhhhbljBi    <Esc>jbblljbBi    <Esc>jBi    B<BS><Esc>jhhhi     <BS><Esc>jBi    <Esc>jBi    <Esc>jBi     <BS><Esc>jjkBi    <Esc>jjkBi    <Esc>jjkBi    <Esc>jBi    <Esc>jBi    <Esc>jBi    <Esc>jBi    <Esc>jBi    <Esc>kkkkkkkkkkkkkkkkkkkkkllllllllllllllllhr:jlr:jllllr:jlhR<Esc>lr:jhhhr:jhr:jllr:jllllrLr:jr:jhhhhhhr:jllllwlhr:jhhhhhhhhhlr:jllwlhr:jr:jjkllr:jjkhhhr:jjkhhr:jhhhhhr:jjhhkr:jhhhhr:jlr:jllllr:jlllllllr:<Esc>li"<Esc>hli <Esc>kkkjjhhi <Esc>khhi <Esc>khi:<BS> "<Esc>kllli "<Esc>kwwwllhhhhhhi "<Esc>klllli <Esc>klllhi" <Esc>kkjlli" <Esc>kkjhhhi" <BS><BS> "<Esc>jllli<BS><BS> "<Esc>kklllhhhhhhi "<Esc>kBlllwli "<Esc>kllwli "<Esc>kBlwli "<Esc>kllllli "<Esc>khi "<Esc>khhhhhi "<Esc>khhhi <Esc>kli <Esc>kklljli <Esc>ki <Esc>khhhhi <Esc>khi <Esc>jjjjjjbi"<Esc>lwlhi"<Esc>jlla"<Esc>Bi"<Esc>jhli"<Esc>ji"<Esc>ji"<Esc>ji"<Esc>ji"<Esc>ji"<Esc>jji<Esc>kil<BS><Esc>lli"<Esc>ji"<Esc>ji"<Esc>ji"<Esc>kkkkkkkkkkkwwjjlllli"<Esc>jhhhhhhi"<Esc>jllwlhi"<Esc>jBhhi"<Esc>jllwlhi"<Esc>ji"<Esc>jlli"<Esc>jjkhhhi"<Esc>llli<Esc>lli<BS><BS> "<Esc>jhhhhi"<Esc>jbhhhi"<Esc>jhhhhi"<Esc>jhhhhi"<Esc>jli"<Esc>jlllli"<Esc>jllllllli"<Esc>Bi"<Esc>ki"<Esc>ki"<Esc>ki"<Esc>ki"<Esc>kkkkk:wq<CR>

0 comments


Created by: @maiku1008

408 active golfers, 1659 entries

Leaderboard (lowest score wins):
79
#301 - ccoker2 / @ccoker2

07/03/2025 at 06:27AM

80
#302 - someshkharat3199 / @someshkharat3199

06/21/2025 at 11:42AM

80
#303 - Neix20 / @Neix20

06/21/2025 at 02:55PM

80
#304 - Jeff Nunn / @jbnunn

08/28/2025 at 12:58PM

80
#305 - 0039hm / @0039hm

09/09/2025 at 12:22AM

80
#306 - Henry Sloan / @henryksloan

09/28/2025 at 07:51AM

80
#307 - Crazed-Engineer / @Crazed-Engineer

12/01/2025 at 02:59AM

80
#308 - jan / @sch-28

12/29/2025 at 12:19AM

80
#309 - Noah Sakko / @PricyThunder87

01/12/2026 at 03:06PM

80
#310 - Xclipxe / @Xclipxe

05/27/2026 at 01:12AM

81
#311 - 好家伙! / @xdudna

05/28/2025 at 08:58AM

81
#312 - Sean Morris / @SeanJMorris

02/01/2026 at 01:52PM

81
#313 - Arthur Battut / @Art2B

04/08/2026 at 04:49PM

81
#314 - Ian Y.E. Pan / @ianyepan

05/18/2026 at 06:20AM

82
#315 - PeytonSch / @PeytonSch

05/23/2025 at 12:12AM

82
#316 - rkorolovych / @rkorolovych

06/21/2025 at 02:41PM

83
#317 - yochidros / @yochidros

06/27/2025 at 04:25PM

83
#318 - Nathanknr / @Nathanknr

06/20/2026 at 01:31PM

84
#319 - Hugh Vidler / @OnlyHughMan

05/12/2025 at 08:40AM

84
#320 - Elliot Davill Glas / @DrGlas1

05/16/2025 at 07:51PM

84
#321 - Paulo Bueno Bruno / @paulobueno

06/27/2025 at 02:48AM

85
#322 - Omar Rahman / @omrahman

06/17/2025 at 07:01AM

85
#323 - zlee113 / @zlee113

06/27/2025 at 06:45PM

85
#324 - Caleb Denio / @cjdenio

09/01/2025 at 03:52PM

85
#325 - chenzuyu1-star / @chenzuyu1-star

06/12/2026 at 08:09PM

86
#326 - Luke Danielson / @danielukea

04/30/2025 at 10:27PM

86
#327 - Rojohn / @SrVariable

05/23/2025 at 11:56PM

86
#328 - Johann Aschenloher / @HansAschenloher

09/05/2025 at 08:51AM

87
#329 - kplieven / @kplieven

12/18/2025 at 11:04AM

87
#330 - Louis-Claude Canon / @lccanon

02/03/2026 at 10:26PM