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

Change class fields from snake case to camel case

Change the class fields in this Scala class from snake case to camel case

Start file
case class User(
  id: Long,
  username: String,
  email: String,
  first_name: String,
  last_name: String,
  age: Int,
  gender: String,
  phone_number: String,
  address: String,
  city: String,
  country: String,
  postal_code: String,
  occupation: String,
  company: String,
  salary: Double,
  is_active: Boolean,
  registration_date: java.time.LocalDate,
  last_login_date: java.time.LocalDateTime,
  preferences: Map[String, String],
  roles: List[String]
)
End file
case class User(
  id: Long,
  username: String,
  email: String,
  firstName: String,
  lastName: String,
  age: Int,
  gender: String,
  phoneNumber: String,
  address: String,
  city: String,
  country: String,
  postalCode: String,
  occupation: String,
  company: String,
  salary: Double,
  isActive: Boolean,
  registrationDate: java.time.LocalDate,
  lastLoginDate: java.time.LocalDateTime,
  preferences: Map[String, String],
  roles: List[String]
)

View Diff

5,6c5,6
<   first_name: String,
<   last_name: String,
---
>   firstName: String,
>   lastName: String,
9c9
<   phone_number: String,
---
>   phoneNumber: String,
13c13
<   postal_code: String,
---
>   postalCode: String,
17,19c17,19
<   is_active: Boolean,
<   registration_date: java.time.LocalDate,
<   last_login_date: java.time.LocalDateTime,
---
>   isActive: Boolean,
>   registrationDate: java.time.LocalDate,
>   lastLoginDate: java.time.LocalDateTime,

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 115 remaining solutions by signing in and submitting your own entry
#116 mike / @mikevux262 - Score: 263 - 04/25/25 @ 13:01
<Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up><Up>:<50-53><50-53>:%s/\(_\)\(\w\)/\u\2/g<<Esc>[201~<CR>:<BS><50-53>:%s/\(_\)\(\w\)/\u\2/g<Esc>[201~u:<50-53>:%s/\(_\)\(\w\)/\u\2/g<Esc>[201~<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><BS><BS><BS><Right><Insert><BS><Right><Left><Left><Left><.<BS><BS><BS><BS><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS><BS>:<BS>:<50-53>:%s/\(_\)\(\w\)/\u\2/g<Esc>[201~<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Down><BS><CR>:wq!<CR>

0 comments


Created by: @pacuna

116 active golfers, 313 entries

Leaderboard (lowest score wins):
13
#61 - phaym / @phaym

10/12/2025 at 06:00PM

13
#62 - Aly Thobani / @alythobani

11/24/2025 at 10:19PM

13
#63 - Whitaker Trebella / @wtrebella

12/12/2025 at 09:12AM

13
#64 - Konrad Guzek / @kguzek

12/24/2025 at 10:19PM

13
#65 - mageprist / @mageprist

12/28/2025 at 03:19PM

13
#66 - sasher8 / @sasher8

01/13/2026 at 01:06PM

13
#67 - Quadrate / @quadratech188

01/17/2026 at 03:09PM

13
#68 - Johann Aschenloher / @HansAschenloher

03/11/2026 at 06:52PM

13
#69 - Rafe Murray / @rafe-murray

03/19/2026 at 07:04AM

13
#70 - NonlinearFruit / @NonlinearFruit

04/02/2026 at 03:40AM

13
#71 - Nıklas Rıeken / @ttnick

04/21/2026 at 07:54AM

13
#72 - Adrian / @adrianlgtm

04/26/2026 at 06:13AM

14
#73 - slash-7 / @slash-7

10/11/2024 at 07:13AM

14
#74 - MatFriend / @MatFriend

10/15/2024 at 12:38AM

14
#75 - Sandro / @ksandro

10/16/2024 at 10:23PM

14
#76 - luke37842 / @luke37842

11/05/2024 at 06:40PM

14
#77 - Philipp Schilk / @schilkp

12/03/2024 at 12:18PM

14
#78 - Swaraj Dash / @swarajdash

01/03/2025 at 06:01PM

14
#79 - jonas-grobe / @jonas-grobe

04/16/2025 at 06:23PM

14
#80 - Austin / @austinlongmn

04/24/2025 at 01:13PM

14
#81 - Yordan Boikov / @yboikov

05/03/2025 at 09:53PM

14
#82 - Atharva / @atharvaM04

05/23/2025 at 09:29AM

14
#83 - Hessesian / @Hessesian

06/19/2025 at 12:07PM

14
#84 - Jesper Wallengren / @Qroop

06/25/2025 at 08:59AM

15
#85 - Philippe Carphin / @PhilippeCarphin

10/15/2024 at 01:35AM

15
#86 - Justin Fisher / @justinfisherr

11/01/2024 at 08:49PM

15
#87 - michaelgattas / @michaelgattas

05/05/2026 at 06:44PM

16
#88 - thedvd98 / @thedvd98

11/05/2024 at 09:18PM

16
#89 - Biswajit / @biswajitpatra

01/26/2025 at 03:15PM

16
#90 - Jarrod Folino / @JarrodFolinoFC

05/30/2025 at 01:59PM