不同平臺間的換行符轉換
1. Windows -> UNIX
windows平臺上帶有CR+LF換行符的文字檔案, 在UNIX下完全顯示正常.
以下是一個Windows平臺的文字檔案win-main.cpp:
win-main.cpp在ubuntu linux系統上, 使用vi開啟:
但是如果一個檔案中夾雜著兩種換行符:LF和CR+LF, 則問題就比較棘手.
夾雜著兩種換行符的檔案為localtime.cpp:
Windows的notepad無法正確對LF進行換行:
而UNIX下也顯示異常:
方法一: notepad++
Edit -> EOL Conversion選單下有三種選項:
Windows Format
Unix/OSX Format
Old Mac Format
方法二: vi/vim
1) 可以使用如下命令, 將\r字元(即上述顯示的^M符號)刪除:
:%s/^V^M//g
其中, ^V指ctrl+v, ^M指ctrl+m
最終的效果為:
:%s/^M//g
或者使用如下命令:
:%s/\r//g
其中\r代表Carriage Return字元
2) 設定檔案格式為unix格式
:set fileformat=unix
http://vasir.net/blog/ubuntu/removing-m-characters-on-ubuntu-in-vim/
http://stackoverflow.com/questions/5843495/what-does-m-character-mean-in-vim
後記(2012/10/24):在Unix平臺有個內建的命令dos2unix(也有與之對應的unix2dos),可以批量將Windows或Mac平臺的文字檔案格式轉換為Unix格式。如,將src目錄下的所有檔案換行轉換為Unix換行,可以使用命令:dos2unix
src/*