產(chǎn)生問(wèn)題的原因:
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供寶安網(wǎng)站建設(shè)、寶安做網(wǎng)站、寶安網(wǎng)站設(shè)計(jì)、寶安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、寶安企業(yè)網(wǎng)站模板建站服務(wù),十余年寶安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
在linux下,不可避免的會(huì)用VIM打開(kāi)一些windows下編輯過(guò)的文本文件。我們會(huì)發(fā)現(xiàn)文件的每行結(jié)尾都會(huì)有一個(gè)^M符號(hào),這是因?yàn)?DOS下的編輯器和Linux編輯器對(duì)文件行末的回車(chē)符處理不一致,對(duì)于回車(chē)符的定義:
windows:0D0A
unix\linux: 0A
MAC: 0D
DOS, Mac 和Unix格式的文件回想計(jì)算機(jī)的史前史,那時(shí)的打字機(jī)使用兩個(gè)字符來(lái)開(kāi)始一個(gè)新行。首先是一個(gè)字符命令使打印頭移回開(kāi)始位置(回車(chē),),然后另一個(gè)字符命令控制向前進(jìn)紙一行(進(jìn)紙, ).在計(jì)算機(jī)誕生之初,存儲(chǔ)設(shè)備十分昂貴。于是有人就提出沒(méi)有必要用兩個(gè)字符來(lái)表示一行的結(jié)束。UNIX一族決定只用進(jìn)紙一個(gè)字符 來(lái)表示行尾。來(lái)自蘋(píng)果陣營(yíng)的人則把回車(chē) 作為換行的標(biāo)準(zhǔn)。MS-DOS(和微軟的Windows)仍然決定沿用古老的回車(chē)換行 傳統(tǒng)。這也意味著如果把文件從一個(gè)系統(tǒng)移到另一個(gè)不同的系統(tǒng),你就會(huì)遇到與換行相關(guān)的問(wèn)題。Vim編輯器則可以識(shí)別這些不同格式的文件。
解決方法:
在命令模式下使用正則表達(dá)式進(jìn)行字符全文空替換:
:%s/^M//g
其中"^M"的輸入,分別是“Ctrl+v”、“Ctrl+M”鍵生成的。像^M這樣的在VIM中是控制字符,在查找替換中輸入控制字符必須用別的方法,那就是在輸入^M時(shí),必須依次在鍵盤(pán)上敲入Ctrl+V和Ctrl+M。
2. 使用sed 工具
$ sed -e 's/\x0D//g' mydebug.c > temp_mydebug.c23
3. 最簡(jiǎn)單的使用dos2unix工具
$ sudo apt-get install dos2unix $ dos2unix README.txt
參考文檔:
如何解決VIM中打開(kāi)文件里有的^M
vim打開(kāi)文件有^M結(jié)尾
在Vim中查找替換控制字符
關(guān)于linux中使用vim打開(kāi)文件出現(xiàn)^M的解決方法
Linux命令dos2unix簡(jiǎn)析
dos2unix 下載