Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replacing carriage return ^M with Enter

Tags:

vim

I know how to remove ^M in my files (%s/^M//g), but this one is just one line I'd like to replace ^M with enter... what's the enter character in VIM (to use in commnad-line mode).

like image 991
igorgue Avatar asked May 09 '11 15:05

igorgue


People also ask

Is carriage return the same as enter?

Many webpages said that ASCII code for enter key is 13(0d). Enter key is considered as Carriage Return (CR).


2 Answers

To replace carriage return character (which is <C-m>) with line feed character (which is unix line break character) you should run a bit strange command:

%s/\r/\r/g 

It looks like if it is doing nothing, but in regular expressions and double-quoted strings carriage returns are represented using \r and line feeds with \n, while in the replacement part of :s command and substitute() function they mean the opposite.

Note that in terminal Enter produces <C-m>, so your initial request is not valid.

like image 59
ZyX Avatar answered Sep 22 '22 17:09

ZyX


:%s/\r//g only works when:

  • set ff=unix, which when done, automatically converts all CRLF to LF

  • set ff=dos and CR is a rogue char that is not preceded by LF, e.g., inserted with C-V C-M.

    CR in LF CR pairs will not be found.

Therefore, if all you want is to convert every LF CR to LF, you should use:

:set ff=unix :w