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 355 remaining solutions by signing in and submitting your own entry
#356 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

356 active golfers, 1523 entries

Leaderboard (lowest score wins):
67
#211 - regarager / @regarager

05/01/2025 at 09:37PM

67
#212 - Joe Finn / @jafinn3

06/03/2025 at 12:49PM

67
#213 - TWiZTeD22 / @TWiZTeD22

07/18/2025 at 09:14PM

67
#214 - Rafe Murray / @rafe-murray

01/15/2026 at 08:42PM

68
#215 - Michal Trybus / @komar007

05/09/2025 at 06:43AM

68
#216 - Janne / @janow25

05/09/2025 at 04:06PM

68
#217 - Michael Lodispoto / @MikeLodispoto

05/13/2025 at 12:44AM

68
#218 - Theodore Hua / @TheodoreHua

08/28/2025 at 09:52PM

68
#219 - djheidihoe / @djheidihoe1

10/15/2025 at 10:08PM

69
#220 - lvilour / @lvilour

04/27/2025 at 09:46PM

69
#221 - Leonardo Dipilato / @LeonardoDipilato

06/02/2025 at 11:39AM

69
#222 - Willian Ver Valem Paiva / @WillianPaiva

07/03/2025 at 03:00PM

69
#223 - Matéo / @MateoGreil

11/06/2025 at 05:34AM

69
#224 - John Flynn / @xflynx25

11/16/2025 at 01:38PM

70
#225 - Marky ジャ / @marky291

06/28/2025 at 10:18PM

70
#226 - Frederik F / @FrederikFrederiksenMancofi

12/08/2025 at 08:38AM

70
#227 - korrektesoftware / @korrektesoftware

03/07/2026 at 05:17PM

71
#228 - taep96 / @taep96

05/13/2025 at 08:59PM

71
#229 - James / @JTansey93

05/30/2025 at 02:45PM

71
#230 - Akira Yamazaki / @Chihsiao

07/08/2025 at 12:45PM

71
#231 - lovebigwei / @lovebigwei

10/17/2025 at 09:35AM

71
#232 - huqingkun / @huqingkun

12/15/2025 at 02:15PM

71
#233 - Zhener / @Zhen3r

12/19/2025 at 08:00AM

71
#234 - Branimir Mirčetić / @BranimirMireti1

03/01/2026 at 11:00PM

71
#235 - Moritz / @MoriGeba

03/09/2026 at 09:18AM

72
#236 - paperbenni / @paperbenni

04/27/2025 at 05:07PM

72
#237 - Jordan Hu / @jskhu

05/14/2025 at 11:56PM

72
#238 - Suraj Kumar / @kumarsuraj512

08/15/2025 at 06:55PM

72
#239 - Jerry Yang / @efJerryYang

10/31/2025 at 12:43AM

72
#240 - Njandon7 / @Njandon7

01/16/2026 at 11:29PM