Visual studio 2010 如何修复整个VS解决方案中不一致的行尾?

Visual studio 2010 如何修复整个VS解决方案中不一致的行尾?,visual-studio-2010,line-endings,Visual Studio 2010,Line Endings,VisualStudio将在打开文件时检测不一致的行尾,并且有一个选项可以修复该特定文件的行尾。但是,如果我想修复解决方案中所有文件的行尾,我该怎么做呢?试试看 Edit > Advanced > Format Document 然后保存文档,只要文件没有被其他外部编辑器修改,它就应该保持一致。帮我修好 您可以使用“在文件中替换”命令并启用正则表达式。例如,要用标准的Windows回车换行符“\r\n”替换具有单个换行符“\n”(例如,来自GitHub)的行尾,请搜索: ([^\r

VisualStudio将在打开文件时检测不一致的行尾,并且有一个选项可以修复该特定文件的行尾。但是,如果我想修复解决方案中所有文件的行尾,我该怎么做呢?

试试看

Edit > Advanced > Format Document

然后保存文档,只要文件没有被其他外部编辑器修改,它就应该保持一致。帮我修好

您可以使用“在文件中替换”命令并启用正则表达式。例如,要用标准的Windows回车换行符“\r\n”替换具有单个换行符“\n”(例如,来自GitHub)的行尾,请搜索:

([^\r]|^)\n
这意味着创建一个组(这就是为什么需要括号),其中第一个字符不是回车符或是一行的开头。如果恰好以“\n”开头,行测试的开始实际上只针对文件的最开始部分。下面是一条新线。因此,您将匹配“;\n”,它有错误的行尾,而不是“\r\n”,它是正确的行尾

并将其替换为:

$1\r\n

这意味着保留组($1),然后将“\n”替换为“\r\n”。

为了得到更完整的答案,这对我最有效:

替换

(?<!\r)\n
在带有“regEx”选项的整个解决方案中

这将在迄今为止没有正确行尾的所有文件中设置正确的行尾。它使用负向前看来检查\r\n前面的不存在


注意其他解决方案:它们要么修改所有文件中的所有行(忽略原始行结尾),要么删除每行的最后一个字符

如果安装了Cygwin和cygutils软件包,则可以使用Cygwin外壳中的以下命令链:

unix2dos-idu*.cpp|sed-e's/0[1-9][0-9]/'-e's/[1-9][0-9]*0/'|sed'/[1-9][0-9]/!d'| sed-e's/[1-9][0-9]/'| xargs unix2dos

(用所需的通配符替换*.cpp

要了解其工作原理,可以使用unix2dos命令转换文件,但只需要转换具有不一致行尾(即UNIX和DOS的混合)的文件。-idu选项显示文件中dos和unix行结尾的数量。例如:

   0     491  Acad2S5kDim.cpp
 689       0  Acad2S5kPolyline.cpp
   0     120  Acad2S5kRaster.cpp
 433      12  Acad2S5kXhat.cpp
   0     115  AppAuditInfo.cpp

这里,只需要转换Acad2S5kXhat.cpp文件。sed命令过滤输出,生成需要转换的文件列表,然后通过xargs处理这些文件。

这并没有解决我的问题。它改变了当前文件中的大量空白(不仅仅是行尾),并且没有影响解决方案中的任何其他文件。也没有为我修复,(vsc 7.3.2)只应用源格式,(但不是行尾策略)将
\r?\n
替换为
\r\n
将清除所有行尾,而不涉及使用捕获组。请注意,此方法对我无效。在我的例子中,VS2017在调试期间指向错误的行,所以我尝试了这种方法,但没有效果。使用VS提供的自动结束自动修复功能,即使C++文件也能很好地解决这个问题。格式化文档并没有多大帮助。
   0     491  Acad2S5kDim.cpp
 689       0  Acad2S5kPolyline.cpp
   0     120  Acad2S5kRaster.cpp
 433      12  Acad2S5kXhat.cpp
   0     115  AppAuditInfo.cpp