2015-01-21 1:50 GMT+03:00 Tim Chase <[email protected]>: > [reordering as inline replies are preferred over top-posting on this > mailing list] > > On 2015-01-20 13:33, Bao Niu wrote: > >> An example to replace "hello" with "goodbye": > >> > >> :%s/hello/goodbye/g > >> > >> Suppose you need to replace something with slashes in it. > >> The following attempt to replace "a/b" will NOT WORK: > >> > >> :%s/a/b/goodbye/g > >> > >> However, the following will work: > >> > >> :%s.a/b.goodbye.g > > > > Thank you John, but your advice makes me nervous. Does this dot > > ('.') rule also apply to vimgrep? Or it's only for substitution? > > This must be something that only pros use? > > It's not something only for pros, and it works fine with vimgrep as > well as with the ":s" and ":g" commands: > > :g@foo@p " print every line containing "foo", :g/foo/p > :vimgrep #\<for\># *.py > :%s!/foo/bar!/this/that!g > > However, using a regexp meta-character such as "." does give me pause > I tend to fall back to one of "!", "@", or "#" depending on whether > any of them will appear in my regexp because none of them have > inherent meaning in a regexp, unlike the "." which means "any one > character". >
`@` does have special meaning. By default you need to escape it to have this meaning, but with `\v` you don’t. It is used e.g. for zero-width look-aheads/behinds: `%s/a\@<=b/c/g` will replace all b’s preceded by `a` with `c`. If you use it as a separator you lose either this or verbatim meaning of `@` (depending on regex mode: with `\v` you lose look-aheads/behinds, with other modes you lose verbatim meaning so you can still have both by switching modes). > > -tim > > > > > -- > -- > 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 > > --- > You received this message because you are subscribed to the Google Groups > "vim_use" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- 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 --- You received this message because you are subscribed to the Google Groups "vim_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
