如何修复整个 VS 解决方案不一致的行结尾?

问题描述 投票:0回答:5

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

visual-studio-2010 line-endings
5个回答
47
投票

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

更换

(?<!\r)\n

\r\n

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

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

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


13
投票

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

([^\r]|^)\n

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

并将其替换为:

$1\r\n

这表示保留该组 ($1),然后替换“ “ 和 ” ”.


7
投票

尝试做

Edit > Advanced > Format Document

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


1
投票

如果您安装了 cygutils 软件包的 Cygwin,则可以从 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 处理这些文件。


0
投票

由于尚未提及,因此可以在此处找到转换当前文件中的行结尾的选项:

Edit > Advanced > Set End of Line Sequence
© www.soinside.com 2019 - 2024. All rights reserved.