Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

解决VIM中打开文件里有的^M字符 & Linux命令dos2unix #30

Open
itgoyo opened this issue Dec 25, 2017 · 0 comments
Open

解决VIM中打开文件里有的^M字符 & Linux命令dos2unix #30

itgoyo opened this issue Dec 25, 2017 · 0 comments

Comments

@itgoyo
Copy link
Owner

itgoyo commented Dec 25, 2017

解决VIM中打开文件里有的^M字符 & Linux命令dos2unix

  • 产生问题的原因:

在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,对于回车符的定义:

     windows:0D0A
     unix\linux: 0A
     MAC: 0D

DOS, Mac 和Unix格式的文件回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。首先是一个字符命令使打印头移回开始位置(回车,),然后另一个字符命令控制向前进纸一行(进纸,).在计算机诞生之初,存储设备十分昂贵。于是有人就提出没有必要用两个字符来表示一行的结束。UNIX一族决定只用进纸一个字符来表示行尾。来自苹果阵营的人则把回车作为换行的标准。MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行传统。这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇到与换行相关的问题。Vim编辑器则可以识别这些不同格式的文件。

解决方法:

  • 在命令模式下使用正则表达式进行字符全文空替换:
:%s/^M//g

其中"^M"的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的。像^M 这样的在VIM中是控制字符,在查找替换中输入控制字符必须用别的方法,那就是在输入^M时,必须依次在键盘上敲入Ctrl+V和Ctrl+M。

  • 使用sed工具
$ sed -e 's/\x0D//g' mydebug.c > temp_mydebug.c23
  • 最简单的使用dos2unix工具
$ sudo apt-get install dos2unix
$ dos2unix README.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant