vim中^M的研究

vim打开文件时在行尾显示^M,这样的情况时不时会遇到,下面稍微深入了解下这个问题;

原理呢,其实很简单:Windows换行风格(也叫dos风格)的文本以Unix风格解析就会出现这个情况;

首先重现这个情况

在Windows用notepad创建一个文件a.txt,随便写点内容进去,然后拷贝到Linux;

此时在Linux中用vim打开是看不到^M的,因为在vim中可以看到fileformat是dos:

:set ff
    fileformat=dos

解析风格与原风格一致当然不会出现^M,思路呢就是把解析风格改为unix才能重现;

注意这里使用:set ff=unix是不行的,因为这个命令vim会自动把文本风格和解析风格同时改为unix;

实验表明用>>,sed等外部修改命令就可以达到效果:

# echo end >> a.txt
# vim a.txt
:set ff
    fileformat=unix

在第一条命令执行后,用vim打开就可以看到^M了;

检查这个问题

如果有很多文件想确认下是否存在这个问题,总不能一个个去vim打开查看吧,可以用下面两个命令;

注意:Linux命令行的^M=ctrl+v,ctrl+m,就是按住ctrl然后依次单击v和m即可;

# grep "^M" -lr .
# file `find -type f` | grep CRLF

解决这个问题

了解了原理其实解决起来就很简单了;

在vim中解决单个文件:

:%s/^M$//g

批量解决:

# sed -i "s/^M//" `grep "^M" -lr .`

over

转载于:https://www.cnblogs.com/toSeek/p/6758380.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值