8

If I type /regex then the cursor temporarily jumps to the first match and all matches are highlighted. This updates as I type. Is it possible to get this behavior when I'm getting ready to make a substitution? For instance, when I'm working on a complicated regular expression :%s/\<regex\>/, I would like to know what is matching before I pull the trigger and change everything. Any way to do it?

  • It would be nice if it would work in a way it works with the search: highlighting what currently matches. Did you find the best way to do it? – Anton Daneyko Jan 27 '15 at 12:59
12

Type your search using / (or ?) to begin with, which will allow you to tweak your regex (since you're using incsearch)

Once you get it all nice, you can use the previous search pattern (the one you just used) in the substitute command by using two separators for the 'search' item:

/elephant                       " find the next elephant
:%s//rhino/gc                   " make then all rhinos!

Of course, you can use selections and ranges, as normal.

:1,15s,,cougar,g
:'<,'>s::tiger:
  • +1 for teaching me about s// – Steven Lu Jul 17 '13 at 15:36
2

One option is that you can have a confirmation flag c.

:%s;regex;replacement;gc

:h s_flags:

[c] Confirm each substitution.  Vim highlights the matching string.  You can type:              
        'y'     to substitute this match
        'l'     to substitute this match and then quit ("last")
        'n'     to skip this match
        <Esc>   to quit substituting
        'a'     to substitute this and all remaining matches
        'q'     to quit substituting

You can also try grep command to see the filtered output and the highlighted original file.

:g/re/p or :g/re/

  • I like it, but it still require me to complete the regular expression before I see what if anything was matched. – John Berryman Jun 12 '12 at 17:41
0

Well, the short way to see what your regular expression will match is doing a search with / using your desired regex. It will jump to the first match and mark it up while your're typing it. Try it - vim will not disappoint you.

  • True, though that's what I stated in the question. I wish it would update as I'm getting ready to substitute. With your solution I have to try the regex and then copy it (how?) and then use it in a substitution. That's not good enough. – John Berryman Jun 13 '12 at 19:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.