136. Vim的QAs

去掉Vim每行结尾的^M

有时候用vim打开文件,每行结尾都有一个灰色的^M。这个原因是该文件在 windows 或 mac 系统上被创建:

  • windows 的换行符是\n\r
  • mac 的换行符是 \r
  • unix 下的文本换行只需要\n

vim下,这个多余的\r就被显示为^M,虽然显示为两个字符,但其实是一个字符。

大多数情况下,打开这种文件,vim的状态栏会显示文件格式:utf-8[dos]或者utf-8[mac],此时只需要下面命令可转为unix格式,即可删除或转换所有的^M:

1
:set ff=unix

如果vim显示文件格式已经是utf-8[unix],这时候上述命令就不管用了,说明 vim 识别类型错误,可以先把它纠正(即用dosmac格式打开当前文件),再变更类型:

1
2
3
4
:e ++ff=dos 
# or
# :e ++ff=mac
:set ff=unix

还有一种方法是字符串替换:

1
:%s/\r//g

注意这里是用\r而不是^M,这也是很多人不会删除^M的原因。