Tuesday, August 25, 2009

Re: How to replace break; with {break;}

> First, how do I replace a line that begins with a
> pattern with a line with only \n ? I tried
>
> :1,$ s/^pattern/\n/g
>
> but it didn't work.

For some reason, Vim's newline replacement is \r instead of \n
which I wish I could explain better than "well, that's the way it
is". So you can do

:%s/^pattern/\r

(the /g flag is unneeded because you're anchored to the beginning
of the line, of which there's only one). If you want to replace
the whole line (in the event you have a line that looks like

break; // stuff here

), then your pattern has to consume the whole line:

:%s/^pattern.*/\r

> A similar question is about replacing
>
> break;
>
> with
> {
> break;
> }

If you don't need to keep the level of indent, it's pretty easy:

:%s/break;/{\r\t&\r}/g

(assuming you want a "\t"ab instead of spaces...adjust
accordingly if you want spaces instead). If, however, you want
to keep the indent, it gets a little dirtier:

:%s/\(\s*\)break;/\1{\r\1\tbreak;\r\1}/g

which captures the whitespace before the "break;" with "\(\s*\)"
and then uses it to put back in before the "{", the "\tbreak;"
and the "}".


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_use" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

No comments: