Why does the replacement of newlines making use of g/re/p just relate to every various other line in Vim?
Take into consideration:
foo bar .... bar baz
all of a sudden returns:
foo bar bar bar bar bar ... baz
when I desire newlines after every
bar bar ... bar
as anticipated and also if there are newlines in between all the
bars I get what I anticipate-- an added newline after every line having
bar. I addressed the trouble by using:
yet I 'd actually such as to have a far better understanding on what's taking place.
To recognize what's taking place at this degree of information, I assume you need to grab the resource code. So, pointing out
vim-7.1.314/src/ex_cmds.c (comment ahead of the definition of
This is applied in 2 passes : first we check the apply for the pattern and also set a mark for each and every line that (not) suits. second of all we execute the command for each and every line that has a mark. This is called for due to the fact that after removing lines we do not recognize where to look for the next suit.
Hence, if you delete a line in the
:g' ed command, the mark for this line vanishes also. If you create a line in the
:g' ed command, it will not be noted, so the command will not execute on it. In your instance, line 3 is accompanied line 2, so the mark on line 3 goes away, and also the next mark after line 2 is the one initially placed on line 4.
ex_global establishes the
global_busy variable, which creates a couple of commands, consisting of
:s, to act a little in different ways. I do not assume the distinction matters below though.
Gilles has addressed your "why?", yet I assumed you could be curious about a less complex means to do what you desired.
I desire newlines after every
As opposed to changing the line ending personality (hence signing up with the lines and also shedding the inner mark, per Gilles' solution), add an empty line right prior to completion of each matching line. Usage
$ to get an absolutely no - size suit right prior to completion of the line and also insert a line break there (additionally no demand for the
/g modifier given that the pattern will just match as soon as per line).