VIM: Etsitkö vain tiettyjen rivinumeroiden välillä?

original title: "VIM: Search only between specific line numbers?"


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


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


Since that doesn't seem to work (at least on my Vim configuration), does anybody know how to achieve this?

Thank you.

Tiedän, että Vimin korvaavalla komennolla voit määritellä rivialueen:: 12,24s / etsi / korvata Haluan pystyä määrittämään alueen myös tavallisilla hauilla. Jonkin verran...

Tämä on yhteenveto käännöksen jälkeen. Jos haluat tarkastella koko käännöstä, napsauta käännä-kuvaketta

Kaikki vastaukset
  • Translate
    :help search-range

    and then

    :help /\%>l

    so essentially:


  • Translate

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


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

  • Translate

    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.

  • Translate

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


    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.

  • Translate

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


    This can be simplified with a cmap

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

  • Translate

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


    Then we can meke a search


    Or a change and write the buffer back


  • Translate

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


    This will search from 3-d line to the end