`^M` 在源代码文件的多行中。我怎样才能删除它们?

smi*_*dha 1 text-editors cross-platform

最近有人给我发了几个.cpp源代码文件。在使用 GNU Emacs 或 GVIM 打开文件时,我发现它们在^M每一行的末尾附近都有一个奇怪的字符。

这是一个屏幕截图,显示了我的意思编辑器截图

当我用 Gedit 打开这些相同的源文件时,我看不到这些^M字符。我该怎么办?这里有很多有问题的文件,因此通过替换为空字符串来打开和执行搜索替换操作看起来像是一个破坏操作。

奇怪的是,当我用 GCC 编译时,这些文件编译得很好。这里发生了什么。我该怎么办?

小智 6

在 Unix 中,换行符是\n,而在 Windows 中它是\r\n. \r或者^M是回车符。

如果文件是在 Windows 模式下的编辑器中编写的,则每个换行符都会有一个回车符。如果您告诉您的编辑器(并且如果它理解)将换行符视为在 Windows 中,您将不会再看到这些^M字符。

或者,您可以dos2unix在代码库上运行以解决此问题。

正如您正确地观察到的那样,您在编译时不会看到任何问题,因为这不是代码中的任何额外特殊字符,而只是 windows 和 linux 中换行符解释之间的不匹配。