在Mac上,行尾会自动设置为Windows行尾,我该如何更改?
每次git commit我收到警告,我的文件有 Windows 行结尾,它们将更改为非 Windows 行结尾。我不知道为什么首先会发生这种情况,似乎我现在写入的每个文件都有 Windows 行结尾。如何将其改回使用 Unix 行尾?无论编辑器如何,这都会发生,它发生在 Vim 和 VS Code 中
回答
VIM 和 VS Code 都识别文件是使用 macOS/Unix 行尾(LF,例如0aonly)还是 Windows 文件结尾(CRLF,例如0d后跟0a)并保留它。您可以使用终端hexdump命令,看看你的线被分离0d 0a或只0a。
最有可能的是,在首次创建文件时,它们与 Windows 换行符序列一起保存,而 VIM 和 VS Code 只是保留了该设置。
-
在 VIM 中,当您打开/保存文件时,如果该文件当前正在使用 Windows
CRLF,您将[dos]在底部的状态消息中看到一点。如果它已经是 unix 格式,你将看不到[dos]那里。在VIM中,如果是
[dos]文件,可以使用 将:set fileformat=unix其转换为Unix行尾字符,然后保存转换后的文件。请参阅Vim 将文件从 DOS 转换为 UNIX。 -
在 VS Code 中,您可以设置
eol设置,但这只会影响新文件。同样,现有文件将保留文件最初使用的任何行尾设置。但是,如果您打开文件并查看状态栏,您会在右侧看到
LF或CRLF。你可以点击它来回切换。 -
有关如何在 git 端处理此问题的信息,请参阅配置 Git 以处理行尾。我怀疑您可能想坚持现有的行为(更新到 Unix 行尾字符),但是您会在该 GitHub 文档中清楚地看到您的选项。但是如果你真的想在你的文件中保留 CRLF,你可以相应地配置你的 repo。
根据您拥有的文件数量,您可能需要找到一种工具来将 Windows/DOS 行尾 CRLF 序列转换为 Unix/macOS LF 字符。快速的 StackOverflow 或网络搜索无疑会给你很多建议。
或者,听起来您的存储库已经更新为 Unix 样式的 LF 字符,因此您可能只想拉取并使用它。