一、vim打開window下的檔案出現 ^M
首先了解,dos(windows)下建立的檔案的換行是 ^M\$ (CRLF) ,而在Linux下面,僅僅是以 \$ (LF) 來做斷行符号;
(^M\$ 其實沒有 \ ,隻不過,編輯器預設會使其變為特殊符号,是以加了反斜線)
這就造成了,vim打開dos檔案時,每行末尾出現^M的符号
而這個符号影響很大,如果是一個 shell script 腳本,可造成 “程式無法執行”的狀态
那麼如何解決呢?
二、避免每行出現^M以及解決辦法
1. 可設定所使用的編輯器的斷行
如 sublime text 中,選項:"default_line_ending": "system",
表示,随系統的不同而變化,windows下就是CRLF,unix就是LF
2. 使用指令替換符号
vim指令行狀态下輸入:
:%s/[Ctrl-v][Enter]//g
Ctrl-v的作用是,使得接着輸入的Enter鍵被認為是一個特殊字元,而不是vim指令的結束
3. 使用dos2unix指令
如:dos2unix -k -n test.txt test.new.txt
-k ,表示 保留該檔案原本的 mtime 時間格式(不更新檔案上次内容經過修訂的時間)
-n ,表示 保留原本檔案,将轉換後的内容輸出到新檔案中
注意:-k -n 不能連寫成 -kn ,否則執行不成功;
當然還有相應的 unix2dos 指令,用于兩者的互相轉換
具體 可通過 dos2unix --help檢視相關設定