Macros in VIM are extremely useful for making lots of changes.
One thing that has always bothered me though is that I couldn't run the macro over a movement or line range and had to run it manually for each line.
The secret sauce is the :norm command.
Say you have recorded a macro in the q register.
To apply it to lines 3 - 6 use:
If you like VIM and want to learn more, I suggest you check out Aaron's screencasts.