打开文件时,Visual Studio 将检测到不一致的行结尾,并且有一个选项可以针对该特定文件修复它。但是,如果我想修复解决方案中所有文件的行结尾,我该怎么做?
只是为了更完整的答案,这对我来说最有效:
更换
(?<!\r)\n
与
\r\n
在带有“regEx”选项的整个解决方案中。
这将在迄今为止没有正确行结尾的所有文件中设置正确的行结尾。它使用负前瞻来检查是否不存在 在......面前 .
请小心其他解决方案:它们要么修改所有文件中的所有行(忽略原始行结尾),要么删除每行的最后一个字符。
您可以使用“在文件中替换”命令并启用正则表达式。例如,替换具有单个换行符的行尾“ “(例如,来自 GitHub)使用标准 Windows 回车换行符” ”,搜索:
([^\r]|^)\n
这表示创建一个组(这就是需要括号的原因),其中第一个字符不是回车符或者是行的开头。行测试的开头实际上仅适用于文件的开头,如果它恰好以“开头” "。组后面是换行符。因此,您将匹配 "; “ 其行尾错误,但不是 ” " 这是正确的行尾。
并将其替换为:
$1\r\n
这表示保留该组 ($1),然后替换“ “ 和 ” ”.
尝试做
Edit > Advanced > Format Document
然后保存文档,只要文件没有被其他外部编辑器修改,它就应该保持一致。为我解决它。
如果您安装了 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 处理这些文件。
由于尚未提及,因此可以在此处找到转换当前文件中的行结尾的选项:
Edit > Advanced > Set End of Line Sequence