Unable to replace a space with a new line in Vim

I know the thread.

I run

:%s/ /s/\n/g

I get

E488: Trailing characters

2nd example

I run

:%s/ /\n/g

I get

text^@text

I run the same codes also with the following settings separetaly

set fileformat=unix

and

set fileformat=dos

How can you replace with a new line in Vim?

Upvotes: 106

Views: 96175

Answers (5)

sleske
sleske

Reputation: 83635

:%s/ /Ctrl vReturn/g

Where Ctrl v is Control-key plus key v and Return is the return key (the one on the main keyboard, not the enter key on the numpad). The other characters are typed as usual.

If this is entered correctly, the sequence Ctrl vReturn will display as the characters ^M, typically in a different color, to indicate that they are special. Note that actually typing ^M will not work.

Also note that in Vim for windows, it's Control-q instead of Control-v (as that is paste).


Ctrl-v also allows entering other "special" keys via the keyboard. It is also useful for e.g. Tab or Backspace.

Upvotes: 200

Nathan Fellman
Nathan Fellman

Reputation: 127608

Specifically to answer your problem with trailing characters, this is the regex you specified:

:%s/ /s/\n/g

You have too many /. What happens is that you replace ' ' with s, and then you tag on this after the substitution: \n/g

I think you meant this:

:%s/ \s/\n/g

Note that your /s was changed to \s. Now the substitution will replace one space followed by one whitespace of any kind (space or tab) with \n. I doubt if this solve the problem or replacing space with a newline, but it should explain the error message.

Upvotes: 3

foobarfuzzbizz
foobarfuzzbizz

Reputation: 58735

Try either

For Unix:

:1,$s/\ /\n/g

For Windows:

:1,$s/\ /\r/g

This contains an escape character for the space.

Upvotes: 1

anon
anon

Reputation:

Enter the following:

:s/ /

and now type Ctrl-V or Ctrl-Q (depends on your configuration) and hit the Enter key. You should now have:

:s/ /^M

Finish it off:

:s/ /^M/g

and you are good to go.

Upvotes: 8

rangalo
rangalo

Reputation: 5606

Try

%s/ /\r/g

Upvotes: 73

Related Questions