Vim – join backwards rather than forwards

vim

I have a file, say

Hello A, b, c, d,
Hello A, b, c, d,
Hello A, b, c, 
d,
Hello A, b, c, d,
Hello A, b, c, 
d,
Hello A, b, c, d,
Hello A, b, c, d,

and I'd like it to look like

Hello A, b, c, d,
Hello A, b, c, d,
Hello A, b, c, d,
Hello A, b, c, d,
Hello A, b, c, d,
Hello A, b, c, d,

So I might run the command :g/^d/j and that will join the lines – but it joins the matched lines to the line after – I'd like to join the matched lines to the line before – how might I do this?

Best Answer

You need to be a little more creative with your pattern:

:g/\nd/j

We are essentially matching the line above the line with the single d.

Another solution:

:g/^d/-1j

We move one line up before we do the join.

Related Question