在windows下编辑的文件,在Linux下使用vim打开有时会出现^M符号。vim
本节内容参考[1]windows
vim被配置为fileformat=unix,而你打开的文件都是dos格式的。unix格式的换行符为0A(ascii码)也就是<LF>,dos格式的换行符为 0D 0A(也就是<CR><LF>),<CR>其实就显示为^M。
回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。首先是一个字符命令使打印头移回开始位置(回车,<CR>),而后另外一个字符命令控制向前进纸一行(进纸,<LF>).
在计算机诞生之初,存储设备十分昂贵。因而有人就提出没有必要用两个字符来表示一行的结束:ide
这也意味着若是把文件从一个系统移到另外一个不一样的系统,你就会遇到与换行相关的问题..net
今天无心中发现去除^M的好办法:unix
sed -i "s/\s*$//g" filename
sed -i "s/\s*$//g" `ls`