在windows和*nix不同平台上开发,交换文档时偶尔会出现dos endline问题。例如某个文件的endline被IDE改变后,在git上出现^M问题
导致git版本管理认为每一行都变更了,实际上我们并没有编辑变更内容。这时候需要消除^M字符
方法一、vim编辑删除
如果没有设置fileformat,那么是无法看到^M的
需要在vim运行如下命令
: e ++ff=unix
![]()
![]()
![](https://img-blog.csdn.net/20171205234816087?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3dlZXRUb29s/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20171205234819423?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3dlZXRUb29s/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在查找“\r”就能匹配到^M字符了
![]()
![](https://img-blog.csdn.net/20171205234823541?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3dlZXRUb29s/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
更替^M字符
:% s/\r$//g
成功删除
方法二、dos2unix工具
如果有几十上百个文件需要转换,那么用vim一个一个编辑是不实际的,效率低下还容易出错。
在linux上可以使用dos2unix工具进行转换
ubuntu安装如下
$ sudo apt-get install dos2unix
转换命令
$ dos2unix targetFilePath
例如:
$ dos2unix QuestItem.java
批量命令如下:
$ find src -type f | dos2unix