Tim, Many thanks!
There's an answer on the Stack Exchange site. Does that method work also? Cheers. On Saturday, July 25, 2020 at 6:42:37 PM UTC-5, Tim Chase wrote: > > On 2020-07-25 15:59, Adrian Keister wrote: > > Now is the time for all good men to come to the aid of their > > country. > > > > In this test, I want to find all occurrences where the word 'aid' > > is within ten words of the word 'country'. How can I do that in Vim? > > It's way ugly and requires using the old regex engine[1] (asserted by > the "\%#=1" in the following pattern) to work, but this should do the > trick and be fairly DRY (only requires putting in each term once): > > \%#=1\%(\S\+\_s\+\)\{,9}\<aid\>\&\%(\S\+\_s\+\)\{,9}\<country\> > > I might have a fenceposting issue where "9" should be "8" or "10", > but it should give you the foundation to mess around. Also, I added > the "\<" and "\>" to anchor the words so you don't find things like > "I said my uncle is a country boy" (finding the "aid" in "said"). > Again, season to taste for your own needs. > > The cursor lands a little weirdly (especially noticable if you have > syntax highlighting turned on) because it starts from the point at > which "within the next N words you'll find "aid" and within the next N > words you'll also find "country". > > Alternatively, if you don't mind typing your literals more than once, > you can do > > > /\<aid\>\%(\_s\+\S\+\)\{,10}\_s\+\<country\>\|\<country\>\%(\_s\+\S\+\)\{,10}\_s\+\<aid\> > > > > which will highlight a little more neatly at the cost of extra typing. > However, it also doesn't scale as well if you have more than 2 words > because you need to provide every possible ordering. The method at > the top scales easily for however many words you want within an > N-word range. > > Hopefully one or the other works well for you. > > -tim > > > [1] For the record, the new regex engine gives me an > > E363: pattern uses more memory than 'maxmempattern' > > where the old engine works fine. > > > > > -- -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/48d56df2-d7dc-4a57-9412-158bc1e629fbo%40googlegroups.com.