Visual Studio偶尔会告诉我:

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

然后它给我一个不同标准的下拉列表,比如Windows、Mac、Unix和几个Unicode标准。

这意味着什么?如果我单击“是”会发生什么?


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

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

因为你是在Visual Studio中开发,你显然想在下拉菜单中选择“Windows”。: -)


有些行以\n结尾。

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

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


您正在编辑的文件已使用其他未使用相同行结束符的编辑器进行编辑,导致文件的行结束符混合。

行尾使用的ASCII字符是:

运费返还 LF,换行

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


维基百科的换行文章可能会帮到你。以下是节选:

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


这意味着,例如,有些文本行带有<回车><Linefeed> (Windows标准),而有些文本行仅以<Linefeed> (Unix标准)结束。

如果你点击'是'这些行结束在你的源文件将被转换为所有相同的格式。

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


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


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

一般来说(对于软件开发),我们接受多平台的行结束问题,但是让版本控制软件来处理它。


如果您正在使用Visual Studio 2012:

进入菜单文件→高级保存选项→选择行结束类型为Windows (CR LF)。


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

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


当你复制粘贴的东西从网络,你可能会得到不一致的行结束。 为了解决这个问题,你可以使用Visual studio扩展“行结束符统一器”,它可以在保存文件时自动使行结束符一致。


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

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

然而,在操作系统级别,它们被区别对待:

The Carriage Return ("CR") character (ASCII 13\0x0D, \r): Moves the cursor to the beginning of the line without advancing to the next line. This character is used as the new line character in Commodore and Early Macintosh operating systems (Mac OS 9 and earlier). The Line Feed ("LF") character (ASCII 10\0x0A, \n): Moves the cursor down to the next line without returning to the beginning of the line. This character is used as the new line character in Unix based systems (Linux, macOS X, Android, etc). The Carriage Return Line Feed ("CRLF") character (0x0D0A, \r\n): This is actually two ASCII characters and is a combination of the CR and LF characters. It moves the cursor both down to the next line and to the beginning of that line. This character is used as the new line character in most other non-Unix operating systems, including Microsoft Windows and 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

这是所有。

我希望这对你们有帮助


我在VS 2019中遇到了这个问题,在为Unix设置换行符配置之前,通过为Windows设置换行符配置解决了这个问题。

工具>选项>保存格式>设置>换行符:Windows