I would like to search with vimgrep only within a visual selection of the current file and not the whole file. Is that possible and how? I couldn't find something for this case with Google or in vim help.
The reason why I want this is because I need the result in the quicklist (copen
) and :g/FOO
which is showing the matching lines at the bottom is not doing this job.
Yes, you can, as Vim has special regular expression atoms for mark positions, and the start and end of the visual selection is marked by '<
and '>
. As there are atoms for on / before / after a mark, we need to combine those to cover the entire range of selected lines:
On the selection start |
after the selection start and before the selection end |
on the selection end.
To limit the search to the current file, the special %
keyword is used.
:vimgrep/\%(\%'<\|\%>'<\%<'>\|\%'>\)FOO/ %