有时候用vim
打开文件,每行结尾都有一个灰色的^M
。这个原因是该文件在 windows 或 mac 系统上被创建:
- windows 的换行符是
\n\r
; - mac 的换行符是
\r
; - unix 下的文本换行只需要
\n
。
在vim
下,这个多余的\r
就被显示为^M
,虽然显示为两个字符,但其实是一个字符。
大多数情况下,打开这种文件,vim
的状态栏会显示文件格式:utf-8[dos]
或者utf-8[mac]
,此时只需要下面命令可转为unix
格式,即可删除或转换所有的^M
:
:set ff=unix
如果vim
显示文件格式已经是utf-8[unix]
,这时候上述命令就不管用了,说明 vim 识别类型错误,可以先把它纠正(即用dos
或mac
格式打开当前文件),再变更类型:
:e ++ff=dos
# or
# :e ++ff=mac
:set ff=unix
还有一种方法是字符串替换:
:%s/\r//g
注意这里是用\r
而不是^M
,这也是很多人不会删除^M
的原因。
Q. E. D.