54

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

4

4 回答 4

36

只是为了获得更完整的答案,这对我来说最有效:

代替

(?<!\r)\n

\r\n

在带有“regEx”选项的整个解决方案中。

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

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

于 2016-03-04T11:08:17.110 回答
11

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

([^\r]|^)\n

这表示要创建一个组(这就是需要括号的原因),其中第一个字符不是回车符或者是行首。行测试的开头实际上仅适用于文件的开头,如果它恰好以“\n”开头。跟在组后面的是换行符。因此,您将匹配具有错误行尾的“;\n”,而不是正确的行尾“\r\n”。

并将其替换为:

$1\r\n

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

于 2014-11-13T07:04:28.470 回答
7

尝试做

Edit > Advanced > Format Document

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

于 2013-01-28T17:00:57.723 回答
1

如果您在 Cygwin 中安装了 cygutils 软件包,则可以从 Cygwin shell 使用以下命令链:

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 处理这些文件。

于 2017-10-13T11:58:15.550 回答