Visual Studio偶尔会告诉我:
以下文件中的行结尾不一致。你想要标准化行结尾吗?
然后它给了我一个不同标准或下载的下拉菜单,例如Windows,Mac,Unix和几个Unicode。
如果点击Yes
?
答案 0 :(得分:200)
这通常意味着您的行以回车符/换行符对之外的其他内容结尾。当您从网页复制并粘贴到代码编辑器中时,通常会发生这种情况。
标准化行结尾只是确保所有行结束字符都是一致的。它会阻止一行以\r\n
结尾,另一行以\r
或\n
结尾;第一个是Windows线端对,而其他的通常用于Mac或Linux文件。
由于您在Visual Studio中进行开发,因此您显然希望从下拉列表中选择“Windows”。 : - )
答案 1 :(得分:71)
有些行以\n
结尾。
其他一些行以\r\n
结尾。
Visual Studio建议您使所有行结束相同。
答案 2 :(得分:40)
如果您使用的是Visual Studio 2012:
转到菜单文件→高级保存选项→选择行结尾键入 Windows(CR LF)
答案 3 :(得分:11)
要打开/关闭选项,请按照菜单栏中的以下步骤操作:
工具→选项→环境→文档→检查加载时的一致行结尾< / em>的
答案 4 :(得分:7)
您正在编辑的文件已使用其他编辑器进行编辑,该编辑器不使用相同的行结尾,从而生成带有混合行结尾的文件。
用于行结尾的ASCII字符为:
CR,回程
LF,换行
Windows = CRLF
Mac OS 9或更早版本= CR
Unix = LF
答案 5 :(得分:6)
维基百科newline article可能会帮助你。这是一段摘录:
不同的换行符约定通常会导致在其间传输的文本文件 不正确显示的不同类型的系统。例如,源自的文件 在运行的某些程序上,Unix或Apple Macintosh系统可能会显示为一条长行 微软Windows。相反,当查看源自Windows计算机的文件时 在Unix系统中,额外的CR可以显示为^ M或在每行的末尾或作为a 二线休息。
答案 6 :(得分:5)
这意味着,例如,您的一些文本行带有<Carriage Return><Linefeed>
(Windows标准),有些只带有<Linefeed>
(Unix标准)。
如果单击“是”,则源文件中的行尾将转换为具有相同格式。
这对编译器没有任何影响(因为行尾只计算为空格),但它可能会对其他工具产生一些影响(例如版本控制系统上的'diff')。
答案 7 :(得分:4)
它不仅仅是Visual Studio ......它可以是读取文件,编译器,链接器等必须能够处理它的任何工具。
一般情况下(对于软件开发),我们接受多平台线路结束问题,但让版本控制软件处理它。
答案 8 :(得分:2)
Visual Studio 2008有一个加载项,用于在保存文件时转换行结束格式。您可以在此处下载:http://grebulon.com/software/stripem.php
答案 9 :(得分:2)
答案 10 :(得分:0)
换行符也称为换行符,行尾(EOL)或换行符是控制字符或字符编码规范(例如ASCII或EBCDIC)中的控制字符序列,用于表示一行文本的结尾和一个新文本的开头。当您按下 Enter键时,某些文本编辑器会设置/实现此特殊字符。
回车,换行字符是行尾( EOL )的ASCII表示。他们将结束字符串的当前行,并开始新的一行。
但是,在操作系统级别,它们的处理方式有所不同:
回车符(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中标准化不一致的行尾意味着要为所有文件选择一种字符类型。可能是:
但是,可以使用根目录中的readme
文件以更好的方式进行设置,以避免在将文件从一个操作系统移动到另一个操作系统时发生冲突。
只需在应用程序的根目录中创建一个名为.gitattributes
的新文件:
.gitattributes
并在其中添加以下内容:
touch .gitattributes
这将强制使用Unix 换行符换行符。
注意:如果这是一个已经存在的项目,只需运行此命令,即可使用# Enforce Unix newlines
* text=auto eol=lf
中指定的新定义的行结尾来更新应用程序的文件。
.gitattributes
仅此而已。
我希望这会有所帮助