Visual Studio将在打开文件时检测到不一致的行结尾,并且可以选择为该特定文件修复它。但是,如果我想为解决方案中的所有文件修复行结尾,我该怎么做?
答案 0 :(得分:24)
只是为了得到更完整的答案,这对我来说效果最好:
替换
(?<!\r)\n
与
\r\n
在整个解决方案中使用“regEx”选项。
这将在所有到目前为止没有正确行结束的文件中设置正确的行。它使用负向前瞻来检查\ n前面的\ r是否存在。
小心其他解决方案:他们将修改所有文件中的所有行(忽略原始行结尾)或删除每行的最后一个字符。
答案 1 :(得分:9)
您可以使用“替换文件”命令并启用正则表达式。例如,要替换具有单个换行符的行末尾&#34; \ n&#34; (例如,来自GitHub),使用标准的Windows回车换行符#34; \ r \ n&#34;,搜索:
([^\r]|^)\n
这表示创建一个组(这就是为什么需要括号),其中第一个字符不是回车符或是行的开头。行测试的开始实际上仅适用于文件的开头,如果它恰好以&#34; \ n&#34;开头。该小组之后是一个换行符。所以,你会匹配&#34 ;; \ n&#34;它有错误的行尾,但不是&#34; \ r \ n&#34;这是正确的行尾。
并将其替换为:
$1\r\n
这表示保留组($ 1)然后替换&#34; \ n&#34;用&#34; \ r \ n&#34;。
答案 2 :(得分:7)
尝试
Edit > Advanced > Format Document
然后保存文档,只要文件没有被其他外部编辑器修改,它就应该保持一致。修复它给我。
答案 3 :(得分:1)
更新:请小心。除非您已经完全致力于您的代码存储库,否则不要这样做,您可以回滚任何无意的更改。阅读以下评论。对我有用的事情可能不适合你。
Ron的回答非常接近帮助我,但我必须做一些调整才能使它在Visual Studio中运行。
1)打开要解决此问题的解决方案。
2)确保所有挂起的更改都已签入,因为您可能会编辑文档的内容并且不想撤消其他待处理的更改。
3)在任何文档中按Ctrl + F打开搜索框,然后单击左侧的向下箭头图标将其展开到搜索/替换框。
4) 在顶行,粘贴:
([^\r]|^)\n
在底线,粘贴:
\r\n
5)启用.*
图标为&#34;使用正则表达式&#34;特征
6)更改该图标旁边的下拉菜单,使其显示&#34;整个解决方案&#34;或者&#34;所有打开的文件&#34;或任何适合你情况的东西。
7)点击&#34;全部替换&#34;在图标中显示ab -> ac
的按钮。
那就是它!
顺便说一下,我需要这个,因为Unity的脚本模板都是在MonoDevelop中制作的,所以默认情况下他们已经获得了Mac行结尾。我必须编辑路径中的所有文档:
C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates
所以我在Visual Studio中打开它们,按照我上面列出的过程,使用&#34;所有打开文档&#34;在第6步。
答案 4 :(得分:0)
如果您安装了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处理这些文件。