代码之家  ›  专栏  ›  技术社区  ›  Nathan Wailes

Windows用户为什么要将LF结尾转换为CRLF?

  •  0
  • Nathan Wailes  · 技术社区  · 2 年前

    我在git存储库中处理LF/CRLF问题,并阅读git的文档,试图了解我需要做什么。

    here :

    ...Windows上的许多编辑器会悄悄地用CRLF替换现有的LF样式的行尾,或者在用户按下enter键时插入两个行尾字符。Git可以通过在向索引中添加文件时自动将CRLF行结尾转换为LF来处理这个问题,反之亦然,当它将代码签出到文件系统时。您可以使用打开此功能 core.autocrlf 背景如果您在Windows计算机上,请将其设置为 true 这将在签出代码时将LF结尾转换为CRLF。

    我不明白的是:如果我使用的是Windows,为什么我会在意将行尾从LF转换为CRLF?是不是因为我的编辑器不识别LF行的结尾,所以文件中的所有代码都显示为一行?如果是这样的话,那么如果我用的是编辑器 识别这样的LF行尾并正确显示代码,即使文件使用LF行尾,那么我就不需要进行LF到CRLF的转换,对吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Anders    2 年前

    如果您的编辑器支持LF,而您不关心其他可能希望为您的存储库做出贡献的人,那么是的,在大多数情况下,您不需要进行转换。

    过去20年中任何像样的代码编辑器都应该处理LF文件。另一方面,记事本在很长一段时间内只支持CRLF。在Windows 10中修复 1809 .

    仍然可能有一些命令行工具会阻塞LF,这可能是最大的问题;命令行工具 fopen 在文本模式下使用Microsoft C运行时的文件将输出CRLF,即使 \n 在他们的代码中使用。

    最后,我想这是一个偏好的问题,你希望潜在的转换错误发生在哪里;在git自动转换或用于分析/处理文件的工具中。