开发者

Search only between specific line numbers?

I know that with Vim's substitution command you can specific a range of lines:

:12,24s/search/replace

I want to be able to specify a range with normal searches as well. Something like

:12,24/search

Since that doesn't seem to work (at least on my Vim configuration), does anyb开发者_高级运维ody know how to achieve this?


Great answer from akira. But after some digging, I found an alternative. It's not as elegant but easier to type in:

 :12,24g/search/

This will give you one annoying prompt but it will end up on the first line within the range containing the sought string.


:help search-range

and then

:help /\%>l

so essentially:

/\%>12l\%<24lsearch


Do you really need line numbers? Another way could be to select the range visually.

  1. select the range using v, V or whatever
  2. press ESC to unselect the range
  3. search using /\%Vwhat_to_search to search for 'what_to_search' in the previously selected range.

This is lesser to type, but not directly what you have asked for ;-)

See :help %V

[EDIT] Great, I have just learned that the range to search in can be changed after doing the search by selecting another range, unselecting this range again by pressing ESC and pressing n to repeat search. Vim is really always good for pleasant surprises.


Keep using the substitution command, but append the gc flags to your original example.

:12,24s/search//gc

From :help search-range

[To search within a range] use the ":substitute" command with the 'c' flag.

Example: :.,300s/Pattern//gc

This command will search from the cursor position until line 300 for "Pattern". At the match, you can type 'q' to stop, or 'n' to find the next match.


If there marks say a and b, then the search can be restricted to the region between a and b using

/\%>'a\%<'bSearchText

This can be simplified with a cmap

cmap vmsab /\%>'a\%<'b
cmap vmscd /\%>'c\%<'d


If you would like to search to the end of the file, use $:

:3,$s/pattern//gn

This will search from 3-d line to the end


Using Narrow Region plugin we can open a temporary buffer with the range we need to search or change

:900,1000NarrowRegion

Then we can meke a search

/thing

Or a change and write the buffer back

:%s/this/that/g
:wq
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜