> 123,456g#pattern# <- operate on all lines between 123 and 456 (inclusive) 
> which include a match for "pattern"
> exec "norm! ..." <- do a normal-mode command on each line, as follows:
>   /pattern\<CR> <- search for the pattern
>   \"Ay <- yank from the cursor position and append into "a" register
>   //e\<CR> <- tells where to yank to, in this case to the end of the match

Ideally, the yanked text would consist of each match within the range, 
concatenated together with a newline between each. So, if each line only has 1 
match, this would coincide with an exact copy of the original lines, minus any 
non-matched text, if that makes sense.

I did try your second example but it doesn't seem to work out of the gate, and 
I'm not having any luck tweaking it.

:%g#top="[^"]#exec "norm! /top="[^"]\<CR>\"Ay//e\<CR>"
E15: Invalid expression: ^"]\<CR>\"Ay//e\<CR>"
E15: Invalid expression: "norm! /top="[^"]\<CR>\"Ay//e\<CR>"

-- 
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

Reply via email to