vim中去掉^M ^H

0 Problem

文本文件在linux下用vim打开文件时会出现^M,^H。用sublime打开也会出现奇怪的字符。

1 Reason

三种行尾格式如下:

  • unix : \n
  • dos : \r\n
  • mac : \r

说到控制字符,可以简单列举几个。如下表所示,其中LF和CR是常用的换行符,SOH, EOT, ESC三个字符在计算机网络的数据链路层的帧传输时用到过,NUL为C中字符串结束提供标志\0。

Seq^J^M^H^A^D^{
十进制10130801042700
缩写LFCRBSSOHEOTESCNUL
字符名Line Feed(换行)Carriage Return (回车)Backspace(退格)Starting of Heading(报头开始)End of transmission(传输结束)Escape(转义)Null(空)

2 Solution

在vim下把^M替换掉。注意^M的输入方式为:ctrl + vctrl + m

:%s/^M$//g

所以文件里又一些奇怪的字符,也可以这样去掉,比如^H。注意^H的输入方式为:ctrl + vctrl + h

:%s/^H//g

3 Others

网上看到一些别的方法,take notes下。

:set ff=unix # 告诉vim使用unix换行符

方法1:用dos2unix工具

  • 把win文档转换成linux下文档命令:find ./ -type f -print0 | xargs -0 dos2unix
  • 如果想把linux下的文档转换成win下的:find ./ -type f -print0 | xargs -0 unix2dos

方法2:用sed命令

  • 把win文档转换成linux下文档:find ./ -type f print0 | xargs -0 sed -i 's/^M$//'
  • 把linux下的文档转换成win下的fild ./ -type f print0 | xargs -0 sed -i 's/$/^M/'
  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22