vim 打开文件后会显示^M问题

背景

最近在移植代码的时候,遇到一个有意思的现象,用git diff 查看改动的时候,发现很多没改动的文件每一行的后面都有一个^M, 但是用vim 打开这些文件的时候,在每行的结尾有找不到这个 ^M。
目前有两个问题:

  1. ^M 是怎么来的?
  2. ^M 为什么在vim 下看不到?

问了解决第一个问题,我们得先知道^M 是什么?

^M 是什么

^M 的出现主要是因为Windows 和 Linux 的换行标准差异导致的:

  1. 在Windows下每一行结尾,使用是回车(’\n’)和换行(’\r’)来作为换行的标准。
  2. 在linux下每一行结尾,只是使用一个回车(’\n’)来作为换行的标准;
    所以经过Windows 下编辑的文件,在Linux 再打开就会出现这个问题了。好了,现在我们应该可以回答第一个问题了。

隐藏的原因

用vim 打开文件,再输入命令:

:e ++ff=unix %

这样就可以看到^M了。 那么问题来了,为什么不输入命令就看不到呢?我想大家应该都可以猜到,问题应该和==.vimrc== 有关。
没错,就是因为在.vimrc 我们没有指定fileformats ,而是采用compatible。找到原因,就可以知道该如何做了。关掉compatible,并做如下设定:

:set fileformats=unix

去除方法

说了这么多,我们最终的目的还没有解决,要如何移除这些^M呢?我比较喜欢以下两个方法:

  1. 打开vim,然后输入命令 “:e %s/^M$//g” ;
  2. 使用命令"dos2unix file"

PS: 第一个方法中的"^M", 请分别通过 ^(ctrl + v)和 M(ctrl + M). 这点很重要哦~

当然如果文件比较多,大家也可以 写一个shell脚本,如果对脚本感兴趣,可以留言给小弟~

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值