Saturday, September 20, 2014

Re: Searching for any one of a set or words ?

Tim,


On 2014-09-20 23:42, Tim Chase wrote:
> On 2014-09-20 23:09, Philip Rhoades wrote:
>> If I have words in a file - either on the same or separate lines -
>> is it possible, within vim (I could probably do what I want with a
>> shell script and grep) to search for _any_ of the words in the set?
>>
>> eg I have a file with words:
>>
>> quick fox lazy dog
>>
>> and I have a text file open in vim with the lines
>>
>> the
>> quick
>> brown
>> fox
>> jumps
>> over
>> the
>> lazy
>> dog
>>
>> - I want my search to stop on "quick" then "fox" then "lazy" then
>> "dog" when the search is repeated . . seems too hard to me . .
>
> You can mung your file to make it into an expression and then use
> that to search:
>
> :new " create an empty buffer
> :r words.txt " read your wordlist into it
> :%s/\_s\+/\\|/g " convert all whitespace including newlines
> " to "\|", the "or" conjunction in a regexp
> :y a " yank that into the "a" register
> :q
> :let @/ = '\<\%(' . @a, '\.[*') . '\)\>'
>
> The "let" line takes the resulting combined terms, wraps it in the
> enforcement that it have word boundaries so you don't find "bulldogs"
> but only "dog", and assigns it to the search register. If you don't
> care about word boundaries, you can just do
>
> :let @/ = @a


The simple version works fine but there is an error in the complex let
statement somewhere - I can see the search register and the "a" register
- can you explain how the stuff around the "a" register works or point
me to somewhere?

Thanks,

Phil.
--
Philip Rhoades

GPO Box 3411
Sydney NSW 2001
Australia
E-mail: phil@pricom.com.au

--
--
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+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: