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 339 remaining solutions by signing in and submitting your own entry
#340 Isaac Yu / @yxd0379 - Score: 1250 - 05/30/25 @ 14:57
ddjjjddddjddddjddddjddddjjjjjjjjjjjddddjddjkddjddjddddjjddddkkkkkkkkkkkkkkkkkkkkkkvjjjjjjjjjjjjjjjjjjjjjjjjjjllllllllllllllllllllllllllllllllllllllllllllllll<Tab><Tab><Tab><Tab><Esc><Esc><Esc>hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhi    <Esc>khhhi    <Esc>khhhi    <Esc>k hhhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    k<Esc>xkhhhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhi    <Esc>khhhhi    "<Esc><Esc>khhhhi"<C-U>    H<C-U>"<Esc>khhhhi    "<Esc>khhhhi    "<Esc>Oi<C-U><C-U>{<Esc>jlllllllllllllllllxi:<C-U>": "<Esc>eeeee <BS>q<Esc><Esc>a",<Esc>jhhhhbbbhxi": "<Esc>eeee    la",<Esc>jhbbbbbhx"i:<Esc><Esc><Esc>i": "<Esc>eeee  llla",<Esc>jbbbbbbxi": " <C-U><0xe2><0x80><0x9c><0xe2><0x80><0x9d><Left><C-U><C-U><Esc>uui": "<Esc>eeeeeeeeeeeeeeelllla",<Esc>jhhbbbbbbbbbbbbbi"<Esc>ea"<Esc>lxi: "<Esc>eeeeeellllllllla",<Esc>jeebbbbbbbbbbbbbbi:<C-U>"<Esc>elxi": "<Esc>llllleelllellllea",<Esc>jbbbi"<Esc>elxi:<C-U>": "<Esc>ea",<Esc>jeebbbbblljbbbbeewwwbbbi:<C-U>"<Esc>eexi": "<Esc>ea",<Esc>jebbbbi:<C-U>"<Esc>elxi": "<Esc>ea",<Esc>jhhhhhhhbbbbbbi"<Esc>eexi": "<Esc>eeeeeeeeea",<Esc>jbbbi"<Esc>eexi": "<Esc>ea",<Esc>jbbbbbbi"<Esc>eexi:<C-U>": "<Esc>eeeeea",<Esc>jbbbi"<Esc>eexi": "<Esc>ea",<Esc>jbbbbbi"<Esc>eexi:<C-U>:<C-U>": "<Esc>eeeeeeei<Esc>la",<Esc>jeebbbbbbbbbbi:<C-U>"<Esc>lleexi:<C-U>": "<Esc>eeeeeeellla",<Esc>jhhhhhhhhhhebbbbbbbbbi"<Esc>lllleexi": "<Esc>eeeeeeela",<Esc>jhehbi"<Esc>eexa:<C-U>": "",<Esc>jhhhbbbbi"<Esc>eexi": "<Esc>eeeeeeeeelllllllllla",<Esc>ja<Esc>hhbbbi:<C-U>"<Esc>eexi": "<Esc>ea",<Esc>jbbbi"<Esc>eexi": "<Esc>ea",<Esc>jbi"<Esc>eexa": "",<Esc>jjjjkbi"<Esc>llbeexa": ::<C-U>": ::<C-U>": "",<Esc>jbi"<Esc>eexi": "<Esc>eeeeeeeeeeeea"<Esc>o<C-U>}<Esc>:wq2<BS><CR>

0 comments


Created by: @maiku1008

340 active golfers, 1463 entries

Leaderboard (lowest score wins):
58
#151 - canabadyweb / @canabadyweb

08/04/2025 at 06:18AM

58
#152 - Will Powers / @wpowers42

08/16/2025 at 02:51PM

58
#153 - Tim Redband / @timredband

09/02/2025 at 06:41PM

58
#154 - Luna / @d4wns-l1ght

12/07/2025 at 02:03AM

58
#155 - Jens Wilbert / @dragontec12

12/20/2025 at 11:30PM

58
#156 - mintonofall / @mintonofall

12/30/2025 at 03:18AM

59
#157 - Andrey Rakhubovsky / @omnster

05/02/2025 at 09:36PM

59
#158 - Jay Garg / @JayRGarg

05/04/2025 at 07:24AM

59
#159 - phos / @Phosphorescentt

05/28/2025 at 01:13PM

59
#160 - lairdstewart / @lairdstewart

07/15/2025 at 12:51PM

59
#161 - Oliver Tonnesen / @otonnesen

07/15/2025 at 08:26PM

59
#162 - raffaele-99 / @raffaele-99

07/29/2025 at 07:44AM

59
#163 - Dan Brackenbury / @helpvisa

07/31/2025 at 12:20AM

59
#164 - sam1357 / @sam1357

08/19/2025 at 10:45AM

59
#165 - Ludvig Lindahl / @ludlind

10/12/2025 at 08:43AM

59
#166 - Tyler Patton / @jamestylerpatton

11/19/2025 at 11:12PM

60
#167 - saito ren / @rennn-n

05/31/2025 at 04:51PM

60
#168 - Henry Coggins / @hcoggins

07/05/2025 at 12:09PM

60
#169 - Jannik Birk / @dernatsch

07/08/2025 at 08:12AM

60
#170 - jeremy / @jeremy67339762

10/24/2025 at 09:59PM

60
#171 - bcollins19 / @bcollins19

12/17/2025 at 10:17PM

61
#172 - Silver / @paradisehex

05/09/2025 at 05:18AM

61
#173 - estoneman / @estoneman

05/18/2025 at 11:08PM

61
#174 - A Jar of Copper Salts / @coppersalts

05/24/2025 at 09:10PM

61
#175 - Matthew Cooper / @mkcmkc

06/02/2025 at 10:43AM

61
#176 - Ada / @ada-nomosone

08/27/2025 at 11:17PM

61
#177 - Martin Harvan / @martinhrvn

10/31/2025 at 04:29PM

61
#178 - Robert Polski / @RMpolski

11/03/2025 at 06:18AM

61
#179 - Harun KoƧ / @Wueenzy

12/19/2025 at 05:55PM

61
#180 - M S Dheeraj Murthy / @Dheeraj-Murthy

01/15/2026 at 12:48PM