每次我提交代码时,都会收到一个警告说我的文件有 Windows 换行符,并且它们将被更改为非 Windows 换行符。但我不知道为什么这在第一次发生,似乎现在我写的每个文件都具有 Windows 换行符。无论我使用哪种编辑器(Vim 和 VS Code),都会出现这种情况。如何将其更改回使用 Unix 换行符?
VIM和VS Code都能识别文件是否使用macOS/Unix换行符(LF,例如只有0a
),或Windows换行符(CRLF,例如0d
后跟0a
),并保留该设置。您可以使用终端hexdump -C
命令,并查看您的行是由0d
0a
还是仅由0a
分隔。
很可能,在文件首次创建时,它们被保存为带有Windows换行序列的文件,并且VIM和VS Code仅保留了该设置。
在VIM中,当您打开/保存文件时,如果文件当前使用Windows的CRLF
,您将在底部的状态消息中看到一个小的[dos]
。如果它已经是Unix格式,则您不会在那里看到[dos]
。
在VIM中,如果是[dos]
文件,您可以使用:set fileformat=unix
将其转换为Unix行结束符,然后保存转换后的文件。参见Vim convert file from DOS to UNIX。
在VS Code中,您可以设置eol
设置,但这只影响新文件。同样,现有文件将保留文件最初使用的任何行结束设置。
但是,如果您打开一个文件并查看状态栏,您将在右侧看到LF
或CRLF
。您可以单击它以切换。
有关git如何处理此问题的信息,请参见Configuring Git to handle line endings。我认为您可能希望坚持现有的行为(更新为Unix行结束符),但您将在该GitHub文档中清楚地看到您的选项。但是,如果您真的想保留文件中的CRLF,则可以相应地配置您的存储库。
macos
,很少有人会在这里看到它。 - Brian61354270