Text file with ^M on each line

扶醉桌前 提交于 2019-12-31 10:48:53

问题


I just got a source code file from a friend. The file was created in UNIX. When I opened it in Windows using NotePad++, each line had one extra blank line.

Puzzled, I downloaded Vim and used it to open the file. I then saw a bunch of ^M at the end of each line.

What is this ^M? How do you prevent it from being inserted?


回答1:


Those are DOS/Windows-style line-endings (to be pedantic that's what they're commonly known as now but most early non-UNIX OSes like CP/M and OS/2 had them as well). On the various Unices, line-endings are \n. In DOS/Windows the line-endings are \r\n (CR+LF or Carriage-Return and Line-Feed). The \r is what shows up as ^M. To remove them in vim, I do:

:%s/^M//

You can get the ^M by doing CTRL+V and then CTRL+M

If you are on a UNIX system, you can use dos2unix.




回答2:


its a windows artefact. You have 2 options

  1. Use an editor where you can specify the save format
  2. Use dos2unix on a unix like system to convert



回答3:


It is a carriage return. DOS/Windows editors tend to use a carriage return and a line feed, Unix editors like to use just the line feed. Some editors like geany and textpad can detect it and dont show you the ^M, and some will let you do a save as where the choices include unix style or crlf style. There is also the issue of having an EOF at the end of the file that some compilers used to require.



来源:https://stackoverflow.com/questions/3260293/text-file-with-m-on-each-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!