什么是“^M”以及如何摆脱它?

什么是“^M”以及如何摆脱它?

当我在 Vim 中打开文件时,我看到奇怪的^M字符。

不幸的是,世界上最受欢迎的搜索引擎不能很好地处理查询中的特殊字符,所以我在这里问:

  • 这个^M角色是什么?

  • 它怎么会到那里呢?

  • 我该如何摆脱它?

答案1

^M一个回车符。如果您看到这个,您可能正在查看一个源自 DOS/Windows 世界的文件,其中行结束符由回车符/换行符对标记,而在 Unix 世界中,行结束符由单个换行符标记。

本文有关更多详细信息,以及 Wikipedia 条目新队

本文讨论如何设置 vim 以透明地编辑具有不同行尾标记的文件。

如果你有一个文件的^M某些行末尾带有 ,并且你想删除它们,请在 Vim 中使用:

:s/^M$//

(按Ctrl+ V Ctrl+M插入该内容^M。)

答案2

更简单的方法是使用以下命令:

dos2unix filename

该命令也适用于路径模式,例如

dos2unix path/name*

如果不起作用,请尝试使用不同的模式:

dos2unix -c mac filename
  • -c设置转换模式。其中 CONVMODE 是以下之一:ascii, 7bit, iso, mac默认ascii

答案3

这对我有用

:e ++ff=dos 

:e ++ff=dos 命令告诉 Vim 再次读取文件,强制 dos 文件格式。 Vim 将删除 CRLF 和仅 LF 行结尾,仅在缓冲区中保留每行的文本。

然后

:set ff=unix 

最后

:wq 

答案4

Sed 就地解决方案,无需输入特殊字符(您可以复制它并且它可以工作):

sed -i -e "s/\r//g" filename

解释:

-i: in-place
-e: regular expression
\r: escaped carriage return
/g: replace globally

相关内容