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

extract struct tag in go

Can you extract all struct tags in the fewest keystrokes possible?

Start file
import "time"

type User struct {
	ID             int       `json:"id" db:"user_id"`
	Name           string    `json:"name" db:"username"`
	Email          string    `json:"email" db:"email"`
	CreatedAt      time.Time `json:"created_at" db:"created_at"`
	Password       string    `json:"-" db:"password"` // Omit password from JSON serialization
	Address        string    `json:"address" db:"address"`
	City           string    `json:"city" db:"city"`
	State          string    `json:"state" db:"state"`
	Country        string    `json:"country" db:"country"`
	ZipCode        string    `json:"zip_code" db:"zip_code"`
	PhoneNumber    string    `json:"phone_number" db:"phone_number"`
	ProfilePicture string    `json:"profile_picture" db:"profile_picture"`
	Roles          []string  `json:"roles" db:"roles"`
	CreatedAt      time.Time `json:"created_at" db:"created_at"`
	UpdatedAt      time.Time `json:"updated_at" db:"updated_at"`
}
End file
import "time"

type User struct {
	ID             int       `json:"id" db:"user_id"`
	Name           string    `json:"name" db:"username"`
	Email          string    `json:"email" db:"email"`
	CreatedAt      time.Time `json:"created_at" db:"created_at"`
	Password       string    `json:"-" db:"password"` // Omit password from JSON serialization
	Address        string    `json:"address" db:"address"`
	City           string    `json:"city" db:"city"`
	State          string    `json:"state" db:"state"`
	Country        string    `json:"country" db:"country"`
	ZipCode        string    `json:"zip_code" db:"zip_code"`
	PhoneNumber    string    `json:"phone_number" db:"phone_number"`
	ProfilePicture string    `json:"profile_picture" db:"profile_picture"`
	Roles          []string  `json:"roles" db:"roles"`
	CreatedAt      time.Time `json:"created_at" db:"created_at"`
	UpdatedAt      time.Time `json:"updated_at" db:"updated_at"`
}
{"user_id", "username", "email", "password", "address", "city", "state", "country", "zip_code", "phone_number", "profile_picture", "roles", "created_at", "updated_at"}

View Diff

19a20
> {"user_id", "username", "email", "password", "address", "city", "state", "country", "zip_code", "phone_number", "profile_picture", "roles", "created_at", "updated_at"}

Solutions by @mkcmkc:

Unlock 13 remaining solutions by signing in and submitting your own entry
Created by: @__ngtrongkha

36 active golfers, 142 entries

Solutions by @mkcmkc:
85
#35 - Matthew Cooper / @mkcmkc

08/07/2025 at 03:18AM

85
#>35 - Matthew Cooper / @mkcmkc

08/08/2025 at 02:15AM

87
#>35 - Matthew Cooper / @mkcmkc

08/11/2025 at 12:50AM

100
#>36 - Matthew Cooper / @mkcmkc

07/23/2025 at 12:02AM

100
#>36 - Matthew Cooper / @mkcmkc

07/28/2025 at 02:02AM

100
#>36 - Matthew Cooper / @mkcmkc

08/10/2025 at 11:48PM

102
#>36 - Matthew Cooper / @mkcmkc

08/07/2025 at 02:24AM

103
#>36 - Matthew Cooper / @mkcmkc

08/11/2025 at 01:44AM

108
#>36 - Matthew Cooper / @mkcmkc

07/21/2025 at 10:48PM

116
#>36 - Matthew Cooper / @mkcmkc

07/20/2025 at 10:46PM

145
#>36 - Matthew Cooper / @mkcmkc

07/27/2025 at 10:30PM

171
#>36 - Matthew Cooper / @mkcmkc

07/28/2025 at 12:54AM

195
#>36 - Matthew Cooper / @mkcmkc

07/16/2025 at 04:36AM