On Wed, Jul 15, 2009 at 12:01 PM, Charles E Campbell Jr<charles.e.campbell at nasa.gov> wrote: > Ed Donahue wrote: >> Is it possible in vim to do the following: >> >> Search for this block of data: >> >> # Catalog Service 2.0 for uat03 >> <LocationMatch "^/Services/?"> >> PathPrepend /inquiryservices >> Cluster 172.21.1.1:999 >> </LocationMatch> >> >> And change Cluster 172.21.1.1:9999 to Cluster 172.21.1.2:7000 >> >> It needs to have uat03 (or 02, 01) on the line and this line >> 'PathPrepend /inquiryservices' for the Cluster to be changed. >> > Yes. Embed following into a file, have cursor above any blocks you want > changed, and source this: > > let uat= search('^\s*#\s*Catalog.*uat0[123]$','W') > if uat > if getline(uat+1) =~ '<LocationMatch\>' > let hasprepend = search('^\s*PathPrepend /inquiryservices','Wn') > let lmend = search('^\s*</LocationMatch\>','W') > if lmend && hasprepend > exe uat+1 "," lmend-1 "s/Cluster 172.21.1.1:9999/Cluster > 172.21.1.2:7000/e" > endif > endif > endif > > That's a one shot change. You could wrap this into a function or map > and call it as often as wished. > > I suggest asking vim questions on the vim mailing list, BTW. See > http://vim.sourceforge.net/community.php . You might get a better > answer than mine there, too. > > Regards, > Chip Campbell > > -- > someday I'll have a good signature, I'm sure of it... > > _______________________________________________ > CentOS mailing list > CentOS at centos.org > http://lists.centos.org/mailman/listinfo/centos > Wow, thank you!