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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.