繁体   English   中英

在 Mac 上,行尾自动设置为 Windows 行尾,我该如何更改?

[英]On Mac, line endings are automatically being set to Windows line endings, how do I change that?

每次我git commit任何内容时,我都会收到一条警告,指出我的文件有 windows 行尾,它们将更改为非 Windows 行尾。 我不知道为什么会发生这种情况,似乎我现在写入的每个文件都有 windows 行结尾。 如何将其更改回使用 Unix 行尾? 无论编辑器如何,都会发生这种情况,它发生在 Vim 和 VS Code 中

VIM 和 VS 代码都识别文件是使用 macOS/Unix 行结尾(LF,例如仅0a )还是 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设置,但这只会影响新文件。 同样,现有文件将保留文件最初使用的任何行尾设置。

    但是,如果您打开一个文件并查看状态栏,您会在右侧看到一个LFCRLF 您可以单击它来来回切换。

    在此处输入图像描述

  • 有关如何在 git 端处理此问题的信息,请参阅配置 Git 以处理行尾 我怀疑您可能想要坚持现有的行为(更新到 Unix 行尾字符),但您会在 GitHub 文档中清楚地看到您的选项。 但是如果你真的想在你的文件中保留 CRLF,你可以相应地配置你的 repo。

根据您拥有的文件数量,您可能希望找到一种工具来将 Windows/DOS 行尾 CRLF 序列转换为 Unix/macOS LF 字符。 快速的 StackOverflow 或 web 搜索无疑会给你很多建议。

或者,听起来您的 repo 已经更新为 Unix 风格的 LF 字符,所以您可能只想拉取并使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM