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

Change class fields from camel case to snake case

This is the reverse of the previous challenge: https://www.vimgolf.com/challenges/9v006705493c000000000513

Start 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]
)
End 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]
)

View Diff

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

Solutions by @jonas-grobe:

Unlock 9 remaining solutions by signing in and submitting your own entry
Created by: @pacuna

110 active golfers, 457 entries

Solutions by @jonas-grobe:
23
#63 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:25PM

29
#>72 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:24PM

33
#>77 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:21PM

38
#>80 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:18PM

40
#>83 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:17PM

45
#>89 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:12PM

50
#>91 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:09PM

62
#>96 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:05PM

73
#>101 - jonas-grobe / @jonas-grobe

03/27/2025 at 08:00PM