Hi,
sinbad schrieb am 08.12.2016 um 08:57:
>
> I have a file contents as follows, i want to change the text from abc("def"); to
> foo(("def")); in multiple files.
>
> It works if i run the command, but the same thing fails if i run the same command using bufdo;
>
> works-> :s/abc(\(.*\));/foo((\1));/gc
I assume you wanted to change the text in the whole file; thus you need
do provide the range 1,$ or % for the substitute command. Otherwise you
will only change the text on the one line where you cursor currently
happens to be.
> fails-> :bufdo execute "s/abc(\(.*\));/foo((\1));/"
>
> error: E486: Pattern not found: abc((.*));
This command fails because you enclosed the command in double quotes.
Inside double quotes the backslash has a special meaning.
You can fix this by either doubling every backslash which effectively
uses the backslash to escape itself:
:bufdo execute "%s/abc(\\(.*\\));/foo((\\1));/"
Or you can use single quotes where the backslash has no special meaning:
:bufdo execute '%s/abc(\(.*\));/foo((\1));/'
Or get rid of the execute command and use the substitute command directly:
:bufdo %s/abc(\(.*\));/foo((\1));/
I'd prefer the last solution.
Regards,
Jürgen
--
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
--
--
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 vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment