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.

Reply via email to