我的文本文件怎么突然就被 ^M 字符填满了?

我的文本文件怎么突然就被 ^M 字符填满了?

我在 Mac 机器上有一个文本文件,我只使用过 vi/vim 来编辑它。今天,当我使用 vi 打开它时,我注意到到处都是一堆^M字符。我今天做的唯一不同的事情是echo "some text" >> file.txt早些时候将其重定向到它,但我似乎无法在不同的文件上重现它。

是什么让这些^M角色突然出现?

答案1

这是一个部分答案,因为这是假设的,提问者不认为他们做了以下所有事情。

正如在评论经过拉尔夫·伦奎斯特,“Mac 使用^M作为行结束符,Windows 使用^M^J,Unix 使用^J”。 Vim 可以处理所有三种格式。例如,您可以创建一个新文件并指定保存时使用哪个文件,使用(例如):set ff=mac.

如果你用 vim 打开文件,它可以自动确定编码并适当地显示换行符。但是,vim 只会考虑 中指定的格式fileformats。因此,如果fileformats=unix,dos,则 vim 永远不会考虑以 Mac 格式打开文件。因此,如果您在 Mac vim 中创建了一个文件(即使用 Mac 换行符),然后在 Linux vim 中打开该文件(即使用fileformats=unix,dos),那么您会看到^M而不是换行符。可以想象,您可能在创建后已经在 Mac 上处理了整个文件。

另一点需要考虑的是,您是否可以以一种格式创建文件,然后将echo foo >> filename.如果原始格式是 Mac,并且您在 Linux 中追加,则该文件将包含混合格式。假设fileformats设置自由(即fileformats=unix,dos,mac,在这种情况下,vim 似乎选择 Mac 格式。

相关内容