265

Visual Studio 偶尔会告诉我:

以下文件中的行尾不一致。你想规范化行尾吗?

然后它给了我一个带有不同标准或其他东西的下拉列表,例如 Windows、Mac、Unix 和几个 Unicode 标准。

这是什么意思,如果我点击会发生什么Yes

4

12 回答 12

233

这通常意味着您的行以回车/换行对以外的内容结尾。当您从网页复制并粘贴到代码编辑器中时,通常会发生这种情况。

规范化行尾只是确保所有行尾字符都是一致的。它可以防止一行以 or 结尾\r\n而另一行以\ror结尾\n;第一个是 Windows 线端对,而其他通常用于 Mac 或 Linux 文件。

由于您在 Visual Studio 中进行开发,因此您显然希望从下拉列表中选择“Windows”。:-)

于 2009-02-16T15:02:03.400 回答
79

有些行以\n.

其他一些行以 . 结尾\r\n

Visual Studio 建议您使所有行的结尾都相同。

于 2009-02-16T15:02:48.453 回答
41

如果您使用的是 Visual Studio 2012:

转到菜单文件高级保存选项→ 选择行尾类型为Windows (CR LF)

于 2011-02-12T02:33:05.573 回答
20

要打开/关闭该选项,请从菜单栏中执行以下步骤:

工具选项环境文档检查加载时是否一致的行尾

于 2017-04-10T14:40:35.563 回答
8

您正在编辑的文件已使用其他不使用相同行尾的编辑器进行编辑,从而导致文件具有混合行尾。

用于行尾的 ASCII 字符是:

CR、回车
LF、换行

Windows = CRLF
Mac OS 9 或更早版本 = CR
Unix = LF

于 2009-02-16T15:05:07.900 回答
6

维基百科换行文章可能会对您有所帮助。这是一段摘录:

不同的换行约定通常会导致在不同类型的系统之间传输的文本文件显示不正确。例如,源自 Unix 或 Apple Macintosh 系统的文件在 Microsoft Windows 上运行的某些程序上可能显示为单行长。相反,当在 Unix 系统上查看源自 Windows 计算机的文件时,额外的 CR 可能显示为 ^M 或在每行的末尾或作为第二个换行符。

于 2009-02-16T15:05:23.157 回答
5

这意味着,例如,您的某些文本行以 a <Carriage Return><Linefeed>(Windows 标准)结尾,而有些<Linefeed>则仅以 a 结尾(Unix 标准)。

如果您单击“是”,这些源文件中的行尾将被转换为具有所有相同的格式。

这不会对编译器产生任何影响(因为行尾仅算作空格),但它可能会对其他工具产生一些影响(例如,版本控制系统上的“差异”)。

于 2009-02-16T15:05:33.157 回答
5

当您从网络复制粘贴某些内容时,您可能会得到不一致的行尾。
为了解决这个问题,您可以使用 Visual Studio 扩展“行尾统一器”,它可以在保存文件时自动使行尾一致。

在此处输入图像描述

于 2018-10-12T00:44:28.577 回答
4

这不仅仅是 Visual Studio ......它是任何读取文件、编译器、链接器等的工具都必须能够处理它。

通常(对于软件开发)我们接受多平台行尾问题,但让版本控制软件处理它。

于 2010-09-22T23:10:00.057 回答
4

行尾也称为换行符行尾 (EOL)换行符,是字符编码规范(例如 ASCII 或 EBCDIC)中的控制字符或控制字符序列,用于表示一行文本的结束和开始一个新的。当您按下Enter 键时,一些文本编辑器会设置/实现此特殊字符。

回车、换字符是行尾 ( EOL )的ASCII 表示。他们将结束一个字符串的当前行,并开始一个新的。

但是,在操作系统级别,它们的处理方式不同:

  • 回车 ("CR") 字符 (ASCII 13\0x0D, \r):将光标移动到行首而不前进到下一行。此字符在 Commodore 和早期 Macintosh 操作系统(Mac OS 9 和更早版本)中用作换行符。

  • 换行符 ("LF") 字符 (ASCII 10\0x0A, \n):将光标向下移动到下一行,而不返回到行首。此字符在基于 Unix 的系统(Linux、macOS X、Android 等)中用作换行符。

  • 回车换行 ("CRLF") 字符 (0x0D0A, \r\n):这实际上是两个 ASCII 字符,是 CR 和 LF 字符的组合。它将光标向下移动到下一行和该行的开头。此字符在大多数其他非 Unix 操作系统(包括 Microsoft Windows 和 Symbian OS)中用作换行符。

在 Visual Studio 中规范化不一致的行尾意味着选择一种字符类型用于所有文件。它可能是:

  • 回车换行 ("CRLF") 字符
  • 换行(“LF”)字符
  • 回车 ("CR") 字符

但是,您可以使用根目录中的文件以更好的方式进行设置,.gitattributes以避免将文件从一个操作系统移动到另一个操作系统时发生冲突。

.gitattributes只需在应用程序的根目录中创建一个名为的新文件:

touch .gitattributes

并在其中添加以下内容:

# Enforce Unix newlines
* text=auto eol=lf

这会强制使用 Unix换行符换行符

注意:如果这是一个已经存在的项目,只需运行此命令以使用新定义的行结尾更新应用程序的文件,如.gitattributes.

git rm --cached -r .
git reset --hard

就这样。

我希望这有帮助

于 2020-07-24T12:11:53.117 回答
2

Visual Studio 2008 有一个加载项,可在保存文件时转换行尾格式。你可以在这里下载:http: //grebulon.com/software/stripem.php

于 2009-08-17T15:57:49.450 回答
0

我在 VS 2019 中遇到了这个问题,并通过在为 Unix 设置之前为 Windows 设置 LineBreak 配置来解决它。

Tools > Options > Format on Save > Settings > LineBreak: Windows

于 2021-05-21T18:34:53.800 回答