I would like to write a search and replace that only operates on lines that are found in a separate search. So, for example, lets say I want to replace all occurrences of "long" with "int" but only on lines that have the word "key" on them.
:g/key/s/long/int/g
That's :g/ on every line that matches key this regexp (the literal "key") / do the following action s/ substitute long this regexp (the literal "long" in this case) / with int this result (the literal "int") /g and do it for all the occurances of "long" in the line If you want to avoid problems with things like "longbottom", or "singalong" becoming things like "intbottom" and "singaint", you can use :g/key/s/\<long\>/int/g which will ensure that "long" occurs as a "word" (as defined I *think* by the 'iskeyword' property) :help \< :help iskeyword :help :g
I could probably write out a script to do this, but I'm betting there is a really slick way for Vim to do this without a script.
Vim is full of slickness :) -tim