在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`