2010年(8)
分类: LINUX
2010-03-31 16:14:53
背景:
在三大主流操作系統Unix, Windows, Mac中,文本文件表示*行尾*時,使用不同的符號。
Unix使用LF,即line feed,為0x0A,或用^J表示
Mac使用CR,即carriage return,為0x0D,或用^M表示
Windows使用CRLF,為0x0D0A,或用^M^J表示
於是,VIM在不同的系統上便採用不同的符號解析行尾,文件格式分為三種:unix, dos, mac,用 fileformat 標識。
查看當前格式: :set ff?
各格式間轉換: :set ff=unix 并 :w
問題:
在同一文件中,若行尾符號使用混亂,如有時按unix方式用LF結尾,有時按dos方式用CRLF結尾,vim便按unix格式解析(在Linux平台)。結果,使用Windows格式CRLF結尾的行,便出顯示出一個多餘的CR,即^M。
解法:
用查找替換將^M刪除。
法一:
:%s/^M//
注意: ^M的輸入要用 ctrl-v + m 或 ctrl-v +
法二: vim中 CR 可直接用 \r 表示。
:%s/\r//
參考:
:help ff
:help file-formats
(二者需翻牆)