I wrote:
> Brennan Vincent wrote:
>
> > When joining a line that is followed by an empty line (or one with only
> > spaces), POSIX specifies that it should be deleted without the current
> > line being affected. See the section "Join" in
> >
https://pubs.opengroup.org/onlinepubs/9699919799/ .
> >
> > However, vim appends a space to the current line in this case. For
> > example, if line 1 is "foo", and line 2 is blank, after executing :1j
> > line 1 will be "foo ", as can be seen by executing the following (`ex`
> > is provided by `vi` on my system)
> >
> > $ echo -e 'foo\n' > test.txt && echo -e '1j\nwq' | ex test.txt && wc -c
> > test.txt
> > 5 test.txt
> >
> > nvi/nex give the POSIX behavior:
> >
> > $ echo -e 'foo\n' > test.txt && echo -e '1j\nwq' | nex test.txt && wc -c
> > test.txt
> > 4 test.txt
> >
> > Is this a bug, or intentional?
>
> I can't think of a reason why it works this way. And the trailing space
> is useless. So we should call it a bug.
>
> What should happen if the second line is blank, not empty?
1. Discard leading <space> characters from the line to be joined.
2. If the line to be joined is now empty, delete it, and skip steps 3 through 5.
78. You find yourself dialing IP numbers on the phone.