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 4fe3d2c2f73248000100004b

Changing URL path in CSS

What's the quickest way to swap out all the URLs in a CSS file? Is it wasted keystrokes using look-behinds and look-aheads? (I'm sorry for the delete/report--I made a mistake with the last one requiring an ugly search for graphic to replace with images. I just intended this to be a simple search and replace that might possibly generate some macros or normals solutions that are quicker)

Start file
body {
	background: #d47300 url(graphics/noise.png);	
	font-family: 'Open Sans', sans-serif;
}


.background {
	background: url(../images/background_shadow.png) no-repeat top center;
	background-position: 50% 16%;	
}

.background_overlay {
	background: url(../images/background_overlay.png) no-repeat top center;
	padding: 0;
	margin:0;
}


.order {
	background: #ff9e00 url(graphics/order.png) repeat-x;
	height: 25px;
	display: inline-block;
	color: #d47300;
	line-height: 25px;
	font-weight: 700;
	font-size: 13px;
	font-weight: 800;
	padding: 0 10px;
	-webkit-border-radius: 20px;
	-moz-border-radius: 20px;
	box-shadow: 0 0 0px 5px rgba(0,0,0,0.10);	
	margin-right: 20px;
	text-transform: uppercase;
	color: #825600;
	text-shadow: 0px 1px 0px rgba(255,255,255,0.50);
}

.sponsor:hover {
	background-position: 0px -25px;
}

.sponsor:active {
	background: #ff9e00 url(../images/sponsors/sponsorBlock.png) repeat-x;
	background-position: 0px -50px;
}


.telephone {
	background: #fff url(graphics/telephone.png) repeat-x;
	height: 25px;
	display: inline-block;
	color: #A65A01;
	line-height: 25px;
	font-weight: 700;
	font-size: 14px;
	padding: 0 10px;
	-webkit-border-radius: 20px;
	-moz-border-radius: 20px;
	box-shadow: 0 0 0px 5px rgba(0,0,0,0.10);	
	margin-right: 20px;
	text-shadow: 0px 1px 0px rgba(255,255,255,0.50);
}


.social {
	background: #fff url(../social/telephone.png) repeat-x;
	display: inline-block;
	height: 25px;
	line-height: 25px;
	padding: 0 10px;
	color: #A65A01;
	font-weight: 700;
	font-size: 14px;
	-webkit-border-radius: 20px;
	-moz-border-radius: 20px;
	box-shadow: 0 0 0px 5px rgba(0,0,0,0.10);	
	margin-right: 20px;
}
End file
body {
	background: #d47300 url(/wp-content/themes/black/graphics/noise.png);	
	font-family: 'Open Sans', sans-serif;
}


.background {
	background: url(/wp-content/themes/black/images/background_shadow.png) no-repeat top center;
	background-position: 50% 16%;	
}

.background_overlay {
	background: url(/wp-content/themes/black/images/background_overlay.png) no-repeat top center;
	padding: 0;
	margin:0;
}


.order {
	background: #ff9e00 url(/wp-content/themes/black/graphics/order.png) repeat-x;
	height: 25px;
	display: inline-block;
	color: #d47300;
	line-height: 25px;
	font-weight: 700;
	font-size: 13px;
	font-weight: 800;
	padding: 0 10px;
	-webkit-border-radius: 20px;
	-moz-border-radius: 20px;
	box-shadow: 0 0 0px 5px rgba(0,0,0,0.10);	
	margin-right: 20px;
	text-transform: uppercase;
	color: #825600;
	text-shadow: 0px 1px 0px rgba(255,255,255,0.50);
}

.sponsor:hover {
	background-position: 0px -25px;
}

.sponsor:active {
	background: #ff9e00 url(/wp-content/themes/black/images/sponsors/sponsorBlock.png) repeat-x;
	background-position: 0px -50px;
}


.telephone {
	background: #fff url(/wp-content/themes/black/graphics/telephone.png) repeat-x;
	height: 25px;
	display: inline-block;
	color: #A65A01;
	line-height: 25px;
	font-weight: 700;
	font-size: 14px;
	padding: 0 10px;
	-webkit-border-radius: 20px;
	-moz-border-radius: 20px;
	box-shadow: 0 0 0px 5px rgba(0,0,0,0.10);	
	margin-right: 20px;
	text-shadow: 0px 1px 0px rgba(255,255,255,0.50);
}


.social {
	background: #fff url(/wp-content/themes/black/social/telephone.png) repeat-x;
	display: inline-block;
	height: 25px;
	line-height: 25px;
	padding: 0 10px;
	color: #A65A01;
	font-weight: 700;
	font-size: 14px;
	-webkit-border-radius: 20px;
	-moz-border-radius: 20px;
	box-shadow: 0 0 0px 5px rgba(0,0,0,0.10);	
	margin-right: 20px;
}

View Diff

2c2
< 	background: #d47300 url(graphics/noise.png);	
---
> 	background: #d47300 url(/wp-content/themes/black/graphics/noise.png);	
8c8
< 	background: url(../images/background_shadow.png) no-repeat top center;
---
> 	background: url(/wp-content/themes/black/images/background_shadow.png) no-repeat top center;
13c13
< 	background: url(../images/background_overlay.png) no-repeat top center;
---
> 	background: url(/wp-content/themes/black/images/background_overlay.png) no-repeat top center;
20c20
< 	background: #ff9e00 url(graphics/order.png) repeat-x;
---
> 	background: #ff9e00 url(/wp-content/themes/black/graphics/order.png) repeat-x;
43c43
< 	background: #ff9e00 url(../images/sponsors/sponsorBlock.png) repeat-x;
---
> 	background: #ff9e00 url(/wp-content/themes/black/images/sponsors/sponsorBlock.png) repeat-x;
49c49
< 	background: #fff url(graphics/telephone.png) repeat-x;
---
> 	background: #fff url(/wp-content/themes/black/graphics/telephone.png) repeat-x;
66c66
< 	background: #fff url(../social/telephone.png) repeat-x;
---
> 	background: #fff url(/wp-content/themes/black/social/telephone.png) repeat-x;

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 44 remaining solutions by signing in and submitting your own entry
#45 Underhill Labs / underhilllabs - Score: 53 - 10/30/12 @ 05:40
:%s/l(/l(\/wp-content\/themes\/black\//<CR>:%s/\.\.\/<CR>ZZ

0 comments


#46 無ん垢の叫び / john_ababa - Score: 54 - 09/16/12 @ 07:00
:%s,(g,(/wp-content/themes/black/g<CR>:<C-P><BS><BS><Home><Right><Right><Right><Del><Del>\.\.<Right><Del><CR>ZZ

0 comments


#47 James / Dronak - Score: 54 - 09/19/14 @ 23:25
qq/url<CR>2wi/wp-content/themes/black/<Esc>q6@q:%s/\.\.\//<CR>ZZ

0 comments


#48 Chris LeBlanc / cleblanc87 - Score: 56 - 11/02/12 @ 15:43
:%s/l(/l(\/wp-content\/themes\/black\/<CR>:%s/\.\.\//<CR>:w<CR>ZZ

0 comments


#49 vgromainl / vgromainl - Score: 62 - 07/23/12 @ 22:02
:%s/<BS>;\.\./;;<CR>:g/url/norm f(aw<BS>/wp-content/the<BS>emes/black/<CR>:x<CR>

0 comments


#50 Samuel Ytterbrink / Neppord - Score: 66 - 06/23/12 @ 01:29
:%s%url(\(../\|\)\(.\{-}\))%url(/wp-content/themes/black/\2)%<CR>:wq<CR>

0 comments


#51 Dustin Willis Webber / Mephux - Score: 66 - 08/28/12 @ 16:21
:%s/\(url(\.\.\/\)\|url(/url(\/wp-content\/themes\/black\//g<CR><Esc>:wq<CR>

0 comments


#52 Ryan O'Connell / Salshammath - Score: 68 - 06/22/12 @ 02:05
:%s#\v(url\()@<=(\.\.)=/=(.{-})\)@=#/wp-content/themes/black/\3<CR>:<BS>ZZ

0 comments


#53 Veezus Kreist / veezus - Score: 69 - 07/17/12 @ 18:54
/pn<CR>qmF(a/wp-content/themes/black/<Esc>jqn@mn@@n@@n@@n@@n@@:%s/\.\.\//<CR>ZZ

0 comments


#54 Brett Lischalk / blischalk - Score: 342 - 07/14/12 @ 01:16
:%s/graphics//wp-content/themes/black/<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Right>\<Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right>\<Right><Right><Right><Right><Right><Right><Right>\<Right><Right><Right><Right><Right><Right><Right>graphics/g<CR>:<Up><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>\<CR>:<Up><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><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><BS><BS><BS><BS><BS>\.\.\/social<Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><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>social<CR>:<Up><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><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><BS><BS><BS>images<Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><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>images<CR>l<Esc><Esc>:wq<CR>

0 comments


#55 Noel Alejandro / noelrock333 - Score: 435 - 06/22/12 @ 21:39
:$<BS>%S<BS>s,/<BS>l*<BS>(8<BS>[.](<BS>*,-<BS>l(wo<BS>p-wo<BS><BS>content.<BS>/themes.<BS>/black><BS><CR>>><BS><BS><<<BS><BS>ZZ<CR><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down><Down>u:%s.<BS>,8<BS>l(<Esc>[<Esc>:%s,l([./]*,<BS>.<BS>,l(con=<BS><BS><BS><BS>wp-content<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Left><Right>/<Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right><Right>/thee<BS>mes.<BS>/black<Right><CR>jjjjjjjjjjjjjjjjjjjjj}{{{{{{{{{{{{}}}}}}}}}}u%:%s,usl<BS><BS>rl([]<Left>./<Right><Right>.<BS><Left><Left>.<Right><Right><Left><Left><BS><Right><Right><Right>><BS>*,<<BS>*<BS><<BS>url(/content<BS><BS><BS><BS><BS><BS><BS>wp/<BS>-co<BS><BS>content-<BS>.<BS>/themes-<BS>/black/<CR>kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk><Esc>:w<CR><Esc><C-W>q

0 comments


Created by: Salshammath

55 active golfers, 111 entries

Leaderboard (lowest score wins):
40
#1 - Urtica dioica / udioica

06/22/2012 at 02:32AM

40
#2 - Tim Chase / gumnos

06/22/2012 at 02:40AM

40
#3 - h_east (トロッコ6個) / h_east

06/22/2012 at 04:38AM

40
#4 - Conner McDaniel / connermcd

06/22/2012 at 05:24AM

40
#5 - Tibor Claassen / codebeige

06/22/2012 at 06:08AM

40
#6 - Justin Love / wondible

06/22/2012 at 02:23PM

40
#7 - Federico Galassi / federicogalassi

06/22/2012 at 05:41PM

40
#8 - John Whitley / johnwhitley

06/22/2012 at 07:40PM

40
#9 - proglottis / proglottis

06/23/2012 at 10:20AM

40
#10 - ☈king / SharpsawDotOrg

06/24/2012 at 04:04AM

40
#11 - Ricardo Mendes / locks

06/25/2012 at 06:30PM

40
#12 - mwatkward / AftrschoolSpe

06/27/2012 at 01:32PM

40
#13 - Kaleb Hornsby / thekaleb

07/15/2012 at 01:01AM

40
#14 - Daniel S / smatter0ne

07/15/2012 at 10:29PM

40
#15 - Sean Griffin / sgrif

08/13/2012 at 01:06AM

40
#16 - 刘玮 / lwjef

08/17/2012 at 01:41AM

40
#17 - Sune Simonsen / sunesimonsen

08/26/2012 at 09:31AM

40
#18 - mhb / mhbvim

09/24/2012 at 11:02AM

40
#19 - Édouard M'tou / DouardM

10/09/2012 at 09:41AM

40
#20 - John Braxler / braxler

08/12/2014 at 05:57PM

42
#21 - Kerson Hsiao / KersonHsiao

06/22/2012 at 06:37AM

42
#22 - Vitaly Kushner / vkushner

06/22/2012 at 11:22AM

42
#23 - Caleb McDaniel / wcaleb

07/26/2012 at 02:44AM

42
#24 - William Dunand / wdunand

08/03/2012 at 05:32AM

43
#25 - James Davis / tripvg

08/05/2012 at 03:50AM

43
#26 - Reed Riley / ReedRile

08/13/2012 at 06:27PM

43
#27 - Arne Ehrlich / typedlambda

09/05/2012 at 09:43PM

44
#28 - Pandae / psasqw

06/22/2012 at 09:22AM

44
#29 - Matt Walker / _walkermatt

07/18/2012 at 12:16PM

44
#30 - David Galeano / davidgaleano

07/19/2012 at 08:22PM