有时候用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.