【发布时间】:2012-02-20 18:53:07
【问题描述】:
当您打开具有混合行尾的文件时,Visual Studio 会提示您对其进行规范化。有没有办法标准化当前解决方案中的所有文件?
没有回答我的问题的相关帖子:
【问题讨论】:
当您打开具有混合行尾的文件时,Visual Studio 会提示您对其进行规范化。有没有办法标准化当前解决方案中的所有文件?
没有回答我的问题的相关帖子:
【问题讨论】:
正如 Yellowblood 在 Aaron F. 的回答中指出的那样,如果您将 \n (LF) 替换为 \r\n (CRLF),您将会遇到麻烦,因为它会在每个 LF 之前添加一个 CR,即使是那些已经有一个了。
但是,您可以使用任何支持批量替换文件的文本编辑器(如 Notepad++ 或 Visual Studio 的“文件替换”)通过正则表达式来实现您想要的。
例如,要将 LF 替换为 CRLF,请确保激活正则表达式选项,然后替换所有出现的
(?<!\r)\n
与
\r\n
\r 是回车符 (CR),\n 是换行符 (LF)。模式(?<!\r)\n 将匹配任何前一个字符不是回车符的换行符,而不捕获(即替换)前一个字符。
反之则简单得多:只需将\r\n 替换为\n。
与往常一样,备份您的文件并确保在处理整个解决方案之前测试单个文件的操作。
我会将此作为评论添加到 Aaron F. 的回答中,但我的声誉不够高 :)
【讨论】:
您可以创建一个 bat 文件,以递归方式对所有文件进行规范化。
对于 (*.cs) 中的 /R %%i 执行 "C:\Prgs\Tofrodos\todos.exe" -p "%%i"
请注意,您必须更新 todos.exe 的文件路径,可能还有 *.cs 过滤器。
然后你运行 bat 文件并等待它完成。
【讨论】:
Visual Studio 没有为整个解决方案规范化行尾的机制。该功能本质上仅限于在打开和更改文件时检查文件是否正确。
虽然行尾的规范化是由 Visual Studio 在IEditorOperations::NormalizeLineEndings 中公开的 API。因此,可以编写一个插件/脚本来针对解决方案中的项目执行操作。
【讨论】:
我刚刚使用了 Notepad++ 查找和替换功能:
在执行此操作之前,您应该备份或提交您所做的任何更改
【讨论】: