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

Convert list of enums to list of localization terms

While making my game Piloteer, I had a large list of TaskTypes and needed to convert them to an equivalent list of localization terms, to be used when translating the game's text into different languages.

Start file
public enum TaskType
{
	// Course 1 Task Types
	C1_FlipThenHotdog = 0,
	C1_CloudFlips = 1,
	C1_Fly2Seconds = 2,
	C1_Fly5Seconds = 3,
	C1_Fly10Seconds = 4,
	C1_OverTheBench = 5,
	C1_IceCream = 6,
	C1_Backflip = 7,
	C1_FrontFlip = 8,
	C1_TwoFrontFlipsThenFountain = 9,
	C1_PILOTEER = 10,
	C1_Entire = 11,
	C1_Hoops1 = 12,
	C1_Hoops2 = 13,
	C1_Hoops3 = 14,
	C1_FlyLeft = 15,
	C1_Newspaper = 16,
	C1_ToTheSky = 17,
	C1_LifeguardTest = 18,
	C1_JustInTime = 19,

	// Course 2 Task Types
	C2_LandOnCar = 20,
	C2_Entire = 21,
	C2_FallFlip = 22,
	C2_PILOTEER = 23,
	C2_1Bird = 24,
	C2_2Birds = 25,
	C2_5Birds = 26,
	C2_CarToBoatInUnder7 = 27,
	C2_BenchToBench = 28,
	C2_BenchToDock1 = 29,
	C2_BenchToDock2 = 30,
	C2_Hoops1 = 31,
	C2_Hoops2 = 32,
	C2_Hoops3 = 33,
	C2_FlipsOnBuoy = 34,
	C2_BenchTreeDockWithFlips = 35,
	C2_PolesDockCarWithFlips = 36,
	C2_MailToDockInUnder10 = 37,
	C2_BoatPolesBuoyWithWaterTouches = 38,
	C2_MailToBoatOver6Under7 = 39,

	// Course 3 Task Types
	C3_PlaneToBuoyWithFlipInUnder4 = 40,
	C3_TrashcanToBalloonToCarInUnder12 = 41,
	C3_EastBenchToFerrisUnder3 = 42,
	C3_BoatToBalloonInUnder10 = 43,
	C3_BoatToPlaneToCarInUnder15 = 44,
	C3_BenchToBenchInOver8Under9 = 45,
	C3_LandOnPlane = 46,
	C3_LandOnBoat = 47,
	C3_BenchToPlaneToBoatToDockWithFlipsAndWaterTouches = 48,
	C3_BenchToTrashcanToTurbine = 49,
	C3_BalloonToFerrisInUnder3 = 50,
	C3_DockToCarToBalloonToPlane = 51,
	C3_Entire = 52,
	C3_FerrisToWaterToFerris = 53,
	C3_Hoops1 = 54,
	C3_Hoops2 = 55,
	C3_Hoops3 = 56,
	C3_FerrisToDockWith10Birds = 57,
	C3_PILOTEER = 58,
	C3_OverTheHill = 59,

	// Course Training Task Types
	CTraining_BasicFlight = 60,
	CTraining_ExtendedFlight = 61,
	CTraining_PrecisionLanding = 62,
	CTraining_PrecisionLandingWithCrash = 63,
	CTraining_DirectionChange = 64,
	CTraining_SuccessiveLandings = 65,
	CTraining_FlyHigher = 66,
	CTraining_PrecisionMovements = 67,
	CTraining_FrontFlip = 68,
	CTraining_BackFlip = 69,

	NONE = 70
}
End file
public static class LocalizationTerms
{
	// Course 1 Terms
	public const string C1_FLIPTHENHOTDOG = "C1_FlipThenHotdog";
	public const string C1_CLOUDFLIPS = "C1_CloudFlips";
	public const string C1_FLY2SECONDS = "C1_Fly2Seconds";
	public const string C1_FLY5SECONDS = "C1_Fly5Seconds";
	public const string C1_FLY10SECONDS = "C1_Fly10Seconds";
	public const string C1_OVERTHEBENCH = "C1_OverTheBench";
	public const string C1_ICECREAM = "C1_IceCream";
	public const string C1_BACKFLIP = "C1_Backflip";
	public const string C1_FRONTFLIP = "C1_FrontFlip";
	public const string C1_TWOFRONTFLIPSTHENFOUNTAIN = "C1_TwoFrontFlipsThenFountain";
	public const string C1_PILOTEER = "C1_PILOTEER";
	public const string C1_ENTIRE = "C1_Entire";
	public const string C1_HOOPS1 = "C1_Hoops1";
	public const string C1_HOOPS2 = "C1_Hoops2";
	public const string C1_HOOPS3 = "C1_Hoops3";
	public const string C1_FLYLEFT = "C1_FlyLeft";
	public const string C1_NEWSPAPER = "C1_Newspaper";
	public const string C1_TOTHESKY = "C1_ToTheSky";
	public const string C1_LIFEGUARDTEST = "C1_LifeguardTest";
	public const string C1_JUSTINTIME = "C1_JustInTime";

	// Course 2 Terms
	public const string C2_LANDONCAR = "C2_LandOnCar";
	public const string C2_ENTIRE = "C2_Entire";
	public const string C2_FALLFLIP = "C2_FallFlip";
	public const string C2_PILOTEER = "C2_PILOTEER";
	public const string C2_1BIRD = "C2_1Bird";
	public const string C2_2BIRDS = "C2_2Birds";
	public const string C2_5BIRDS = "C2_5Birds";
	public const string C2_CARTOBOATINUNDER7 = "C2_CarToBoatInUnder7";
	public const string C2_BENCHTOBENCH = "C2_BenchToBench";
	public const string C2_BENCHTODOCK1 = "C2_BenchToDock1";
	public const string C2_BENCHTODOCK2 = "C2_BenchToDock2";
	public const string C2_HOOPS1 = "C2_Hoops1";
	public const string C2_HOOPS2 = "C2_Hoops2";
	public const string C2_HOOPS3 = "C2_Hoops3";
	public const string C2_FLIPSONBUOY = "C2_FlipsOnBuoy";
	public const string C2_BENCHTREEDOCKWITHFLIPS = "C2_BenchTreeDockWithFlips";
	public const string C2_POLESDOCKCARWITHFLIPS = "C2_PolesDockCarWithFlips";
	public const string C2_MAILTODOCKINUNDER10 = "C2_MailToDockInUnder10";
	public const string C2_BOATPOLESBUOYWITHWATERTOUCHES = "C2_BoatPolesBuoyWithWaterTouches";
	public const string C2_MAILTOBOATOVER6UNDER7 = "C2_MailToBoatOver6Under7";

	// Course 3 Terms
	public const string C3_PLANETOBUOYWITHFLIPINUNDER4 = "C3_PlaneToBuoyWithFlipInUnder4";
	public const string C3_TRASHCANTOBALLOONTOCARINUNDER12 = "C3_TrashcanToBalloonToCarInUnder12";
	public const string C3_EASTBENCHTOFERRISUNDER3 = "C3_EastBenchToFerrisUnder3";
	public const string C3_BOATTOBALLOONINUNDER10 = "C3_BoatToBalloonInUnder10";
	public const string C3_BOATTOPLANETOCARINUNDER15 = "C3_BoatToPlaneToCarInUnder15";
	public const string C3_BENCHTOBENCHINOVER8UNDER9 = "C3_BenchToBenchInOver8Under9";
	public const string C3_LANDONPLANE = "C3_LandOnPlane";
	public const string C3_LANDONBOAT = "C3_LandOnBoat";
	public const string C3_BENCHTOPLANETOBOATTODOCKWITHFLIPSANDWATERTOUCHES = "C3_BenchToPlaneToBoatToDockWithFlipsAndWaterTouches";
	public const string C3_BENCHTOTRASHCANTOTURBINE = "C3_BenchToTrashcanToTurbine";
	public const string C3_BALLOONTOFERRISINUNDER3 = "C3_BalloonToFerrisInUnder3";
	public const string C3_DOCKTOCARTOBALLOONTOPLANE = "C3_DockToCarToBalloonToPlane";
	public const string C3_ENTIRE = "C3_Entire";
	public const string C3_FERRISTOWATERTOFERRIS = "C3_FerrisToWaterToFerris";
	public const string C3_HOOPS1 = "C3_Hoops1";
	public const string C3_HOOPS2 = "C3_Hoops2";
	public const string C3_HOOPS3 = "C3_Hoops3";
	public const string C3_FERRISTODOCKWITH10BIRDS = "C3_FerrisToDockWith10Birds";
	public const string C3_PILOTEER = "C3_PILOTEER";
	public const string C3_OVERTHEHILL = "C3_OverTheHill";

	// Course Training Terms
	public const string CTRAINING_BASICFLIGHT = "CTraining_BasicFlight";
	public const string CTRAINING_EXTENDEDFLIGHT = "CTraining_ExtendedFlight";
	public const string CTRAINING_PRECISIONLANDING = "CTraining_PrecisionLanding";
	public const string CTRAINING_PRECISIONLANDINGWITHCRASH = "CTraining_PrecisionLandingWithCrash";
	public const string CTRAINING_DIRECTIONCHANGE = "CTraining_DirectionChange";
	public const string CTRAINING_SUCCESSIVELANDINGS = "CTraining_SuccessiveLandings";
	public const string CTRAINING_FLYHIGHER = "CTraining_FlyHigher";
	public const string CTRAINING_PRECISIONMOVEMENTS = "CTraining_PrecisionMovements";
	public const string CTRAINING_FRONTFLIP = "CTraining_FrontFlip";
	public const string CTRAINING_BACKFLIP = "CTraining_BackFlip";
}

View Diff

1c1
< public enum TaskType
---
> public static class LocalizationTerms
3,23c3,23
< 	// Course 1 Task Types
< 	C1_FlipThenHotdog = 0,
< 	C1_CloudFlips = 1,
< 	C1_Fly2Seconds = 2,
< 	C1_Fly5Seconds = 3,
< 	C1_Fly10Seconds = 4,
< 	C1_OverTheBench = 5,
< 	C1_IceCream = 6,
< 	C1_Backflip = 7,
< 	C1_FrontFlip = 8,
< 	C1_TwoFrontFlipsThenFountain = 9,
< 	C1_PILOTEER = 10,
< 	C1_Entire = 11,
< 	C1_Hoops1 = 12,
< 	C1_Hoops2 = 13,
< 	C1_Hoops3 = 14,
< 	C1_FlyLeft = 15,
< 	C1_Newspaper = 16,
< 	C1_ToTheSky = 17,
< 	C1_LifeguardTest = 18,
< 	C1_JustInTime = 19,
---
> 	// Course 1 Terms
> 	public const string C1_FLIPTHENHOTDOG = "C1_FlipThenHotdog";
> 	public const string C1_CLOUDFLIPS = "C1_CloudFlips";
> 	public const string C1_FLY2SECONDS = "C1_Fly2Seconds";
> 	public const string C1_FLY5SECONDS = "C1_Fly5Seconds";
> 	public const string C1_FLY10SECONDS = "C1_Fly10Seconds";
> 	public const string C1_OVERTHEBENCH = "C1_OverTheBench";
> 	public const string C1_ICECREAM = "C1_IceCream";
> 	public const string C1_BACKFLIP = "C1_Backflip";
> 	public const string C1_FRONTFLIP = "C1_FrontFlip";
> 	public const string C1_TWOFRONTFLIPSTHENFOUNTAIN = "C1_TwoFrontFlipsThenFountain";
> 	public const string C1_PILOTEER = "C1_PILOTEER";
> 	public const string C1_ENTIRE = "C1_Entire";
> 	public const string C1_HOOPS1 = "C1_Hoops1";
> 	public const string C1_HOOPS2 = "C1_Hoops2";
> 	public const string C1_HOOPS3 = "C1_Hoops3";
> 	public const string C1_FLYLEFT = "C1_FlyLeft";
> 	public const string C1_NEWSPAPER = "C1_Newspaper";
> 	public const string C1_TOTHESKY = "C1_ToTheSky";
> 	public const string C1_LIFEGUARDTEST = "C1_LifeguardTest";
> 	public const string C1_JUSTINTIME = "C1_JustInTime";
25,45c25,45
< 	// Course 2 Task Types
< 	C2_LandOnCar = 20,
< 	C2_Entire = 21,
< 	C2_FallFlip = 22,
< 	C2_PILOTEER = 23,
< 	C2_1Bird = 24,
< 	C2_2Birds = 25,
< 	C2_5Birds = 26,
< 	C2_CarToBoatInUnder7 = 27,
< 	C2_BenchToBench = 28,
< 	C2_BenchToDock1 = 29,
< 	C2_BenchToDock2 = 30,
< 	C2_Hoops1 = 31,
< 	C2_Hoops2 = 32,
< 	C2_Hoops3 = 33,
< 	C2_FlipsOnBuoy = 34,
< 	C2_BenchTreeDockWithFlips = 35,
< 	C2_PolesDockCarWithFlips = 36,
< 	C2_MailToDockInUnder10 = 37,
< 	C2_BoatPolesBuoyWithWaterTouches = 38,
< 	C2_MailToBoatOver6Under7 = 39,
---
> 	// Course 2 Terms
> 	public const string C2_LANDONCAR = "C2_LandOnCar";
> 	public const string C2_ENTIRE = "C2_Entire";
> 	public const string C2_FALLFLIP = "C2_FallFlip";
> 	public const string C2_PILOTEER = "C2_PILOTEER";
> 	public const string C2_1BIRD = "C2_1Bird";
> 	public const string C2_2BIRDS = "C2_2Birds";
> 	public const string C2_5BIRDS = "C2_5Birds";
> 	public const string C2_CARTOBOATINUNDER7 = "C2_CarToBoatInUnder7";
> 	public const string C2_BENCHTOBENCH = "C2_BenchToBench";
> 	public const string C2_BENCHTODOCK1 = "C2_BenchToDock1";
> 	public const string C2_BENCHTODOCK2 = "C2_BenchToDock2";
> 	public const string C2_HOOPS1 = "C2_Hoops1";
> 	public const string C2_HOOPS2 = "C2_Hoops2";
> 	public const string C2_HOOPS3 = "C2_Hoops3";
> 	public const string C2_FLIPSONBUOY = "C2_FlipsOnBuoy";
> 	public const string C2_BENCHTREEDOCKWITHFLIPS = "C2_BenchTreeDockWithFlips";
> 	public const string C2_POLESDOCKCARWITHFLIPS = "C2_PolesDockCarWithFlips";
> 	public const string C2_MAILTODOCKINUNDER10 = "C2_MailToDockInUnder10";
> 	public const string C2_BOATPOLESBUOYWITHWATERTOUCHES = "C2_BoatPolesBuoyWithWaterTouches";
> 	public const string C2_MAILTOBOATOVER6UNDER7 = "C2_MailToBoatOver6Under7";
47,67c47,67
< 	// Course 3 Task Types
< 	C3_PlaneToBuoyWithFlipInUnder4 = 40,
< 	C3_TrashcanToBalloonToCarInUnder12 = 41,
< 	C3_EastBenchToFerrisUnder3 = 42,
< 	C3_BoatToBalloonInUnder10 = 43,
< 	C3_BoatToPlaneToCarInUnder15 = 44,
< 	C3_BenchToBenchInOver8Under9 = 45,
< 	C3_LandOnPlane = 46,
< 	C3_LandOnBoat = 47,
< 	C3_BenchToPlaneToBoatToDockWithFlipsAndWaterTouches = 48,
< 	C3_BenchToTrashcanToTurbine = 49,
< 	C3_BalloonToFerrisInUnder3 = 50,
< 	C3_DockToCarToBalloonToPlane = 51,
< 	C3_Entire = 52,
< 	C3_FerrisToWaterToFerris = 53,
< 	C3_Hoops1 = 54,
< 	C3_Hoops2 = 55,
< 	C3_Hoops3 = 56,
< 	C3_FerrisToDockWith10Birds = 57,
< 	C3_PILOTEER = 58,
< 	C3_OverTheHill = 59,
---
> 	// Course 3 Terms
> 	public const string C3_PLANETOBUOYWITHFLIPINUNDER4 = "C3_PlaneToBuoyWithFlipInUnder4";
> 	public const string C3_TRASHCANTOBALLOONTOCARINUNDER12 = "C3_TrashcanToBalloonToCarInUnder12";
> 	public const string C3_EASTBENCHTOFERRISUNDER3 = "C3_EastBenchToFerrisUnder3";
> 	public const string C3_BOATTOBALLOONINUNDER10 = "C3_BoatToBalloonInUnder10";
> 	public const string C3_BOATTOPLANETOCARINUNDER15 = "C3_BoatToPlaneToCarInUnder15";
> 	public const string C3_BENCHTOBENCHINOVER8UNDER9 = "C3_BenchToBenchInOver8Under9";
> 	public const string C3_LANDONPLANE = "C3_LandOnPlane";
> 	public const string C3_LANDONBOAT = "C3_LandOnBoat";
> 	public const string C3_BENCHTOPLANETOBOATTODOCKWITHFLIPSANDWATERTOUCHES = "C3_BenchToPlaneToBoatToDockWithFlipsAndWaterTouches";
> 	public const string C3_BENCHTOTRASHCANTOTURBINE = "C3_BenchToTrashcanToTurbine";
> 	public const string C3_BALLOONTOFERRISINUNDER3 = "C3_BalloonToFerrisInUnder3";
> 	public const string C3_DOCKTOCARTOBALLOONTOPLANE = "C3_DockToCarToBalloonToPlane";
> 	public const string C3_ENTIRE = "C3_Entire";
> 	public const string C3_FERRISTOWATERTOFERRIS = "C3_FerrisToWaterToFerris";
> 	public const string C3_HOOPS1 = "C3_Hoops1";
> 	public const string C3_HOOPS2 = "C3_Hoops2";
> 	public const string C3_HOOPS3 = "C3_Hoops3";
> 	public const string C3_FERRISTODOCKWITH10BIRDS = "C3_FerrisToDockWith10Birds";
> 	public const string C3_PILOTEER = "C3_PILOTEER";
> 	public const string C3_OVERTHEHILL = "C3_OverTheHill";
69,81c69,79
< 	// Course Training Task Types
< 	CTraining_BasicFlight = 60,
< 	CTraining_ExtendedFlight = 61,
< 	CTraining_PrecisionLanding = 62,
< 	CTraining_PrecisionLandingWithCrash = 63,
< 	CTraining_DirectionChange = 64,
< 	CTraining_SuccessiveLandings = 65,
< 	CTraining_FlyHigher = 66,
< 	CTraining_PrecisionMovements = 67,
< 	CTraining_FrontFlip = 68,
< 	CTraining_BackFlip = 69,
< 
< 	NONE = 70
---
> 	// Course Training Terms
> 	public const string CTRAINING_BASICFLIGHT = "CTraining_BasicFlight";
> 	public const string CTRAINING_EXTENDEDFLIGHT = "CTraining_ExtendedFlight";
> 	public const string CTRAINING_PRECISIONLANDING = "CTraining_PrecisionLanding";
> 	public const string CTRAINING_PRECISIONLANDINGWITHCRASH = "CTraining_PrecisionLandingWithCrash";
> 	public const string CTRAINING_DIRECTIONCHANGE = "CTraining_DirectionChange";
> 	public const string CTRAINING_SUCCESSIVELANDINGS = "CTraining_SuccessiveLandings";
> 	public const string CTRAINING_FLYHIGHER = "CTraining_FlyHigher";
> 	public const string CTRAINING_PRECISIONMOVEMENTS = "CTraining_PrecisionMovements";
> 	public const string CTRAINING_FRONTFLIP = "CTraining_FrontFlip";
> 	public const string CTRAINING_BACKFLIP = "CTraining_BackFlip";

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 24 remaining solutions by signing in and submitting your own entry
#25 EthanMcGuire / @EthanMcGuire - Score: 213 - 12/28/25 @ 16:19
w2deastatic class LocalizationTerms<Esc>:%s/ =.*/<CR>k2dd:%s/Task T<BS>.*/Terms<CR>ggjjl<C-V>Gk$y<C-V>GklPeeeew<C-V>GkewI= "C<Esc>$<C-V>Gk$A";<Esc>:%s/Terms.*/Terms<CR>:%s/\s*= "C ";/<CR>:%s/C.*=/\UY<BS>&<CR>:%s/\s*=\ =<BS><BS><BS>/ =<CR>:%s/\tC/\tpublic const string C<CR>:wq<CR>

0 comments


Created by: @wtrebella

25 active golfers, 79 entries

Leaderboard (lowest score wins):
86
#1 - ZEraX4 / @ZEraX4

12/18/2025 at 02:44PM

86
#2 - Whitaker Trebella / @wtrebella

12/20/2025 at 02:40AM

86
#3 - Konrad Guzek / @kguzek

12/24/2025 at 11:35PM

86
#4 - ぽんぺい / @shikanoeiyu

01/02/2026 at 05:48PM

88
#5 - Peppa Pig / @PeppaPigSg

12/18/2025 at 04:17AM

95
#6 - guanidium-ameacen / @guanidium-ameacen

01/04/2026 at 11:27PM

102
#7 - Caleb Abrams / @kingcabrams

01/06/2026 at 05:16PM

103
#8 - Martin Georgiev / @martician1

12/20/2025 at 12:48PM

103
#9 - zirb / @zirb

12/24/2025 at 10:50PM

103
#10 - mutilator630 / @mutilator630

01/13/2026 at 09:35PM

103
#11 - M S Dheeraj Murthy / @Dheeraj-Murthy

01/15/2026 at 12:21PM

110
#12 - Martin Knoller Stocker / @linuxswords

12/29/2025 at 01:49PM

111
#13 - andreasgustavsson / @andreasgustavsson

01/12/2026 at 10:10PM

113
#14 - Seagull2004 / @Seagull2004

12/18/2025 at 10:32AM

121
#15 - sasher8 / @sasher8

12/17/2025 at 06:30AM

123
#16 - dennis / @nagolove

12/17/2025 at 11:56PM

128
#17 - drskoolie / @drskoolie

01/04/2026 at 11:09PM

131
#18 - Karate Snoopy / @KarateSnoopy

01/21/2026 at 06:15AM

132
#19 - PricyThunder87 / @PricyThunder87

01/21/2026 at 01:28AM

134
#20 - Njandon7 / @Njandon7

01/16/2026 at 11:50PM

135
#21 - Mateusz Nowak / @dziuniafanboi

12/18/2025 at 11:55PM

140
#22 - Mohammed Tangestani / @tangestani

01/22/2026 at 12:23AM

141
#23 - Doxly / @Doxly

01/13/2026 at 12:41PM

179
#24 - Dani Bengl / @cb341

12/22/2025 at 06:04PM

213
#25 - EthanMcGuire / @EthanMcGuire

12/28/2025 at 04:19PM