阻止 Visual Studio 在文件中混合行尾
Posted
技术标签:
【中文标题】阻止 Visual Studio 在文件中混合行尾【英文标题】:Stop Visual Studio from mixing line endings in files 【发布时间】:2011-04-29 00:54:04 【问题描述】:在 Visual Studio 2010 中打开基于文本的文件时,它将使用 CRLF 而不是原始文件的行结束格式写入我的编辑。我怎样才能阻止 VS 这样做?任何一个像样的编辑器都应该具备这种能力。
更糟糕的是,由于 VS 在 CRLF 中写入了部分文件,因此(再次打开文件时)会显示一个对话框,要求我转换文件行结尾。
【问题讨论】:
试试这个插件:Strip'em 你可能想投票给这个:visualstudio.uservoice.com/forums/121579-visual-studio/… @JonWatte 目前正在接受审核,截至 2016 年 4 月 28 日 这些天我已经离开了 .NET,已经厌倦了 MS 似乎每个季节都在改变焦点,而忽略了诸如此类的简单问题。很高兴看到他们最终修复它。 【参考方案1】:在文件菜单上,选择高级保存选项,你可以在那里控制它。
编辑:Here's the documentation,你应该先打开一个文件。
【讨论】:
我的 VS2010 终极安装中没有这个菜单项。 我在 VS2010 Ultimate 中确实有此设置,但是此选项不是全局持久选项,仅对当前编辑器会话有效。我想要的只是让 VS 在编辑文件时尊重当前打开的文件的行尾。 文件+另存为,单击保存按钮上的箭头。相同但特定于文件。 对于那些在File
菜单中看不到命令的人,您可能需要转到Tools
、Customize
、Commands
选项卡、Menu Bar
:File
,Add Command...
,File
,Advanced Save Options...
,Ok
,Close
。现在您应该可以选择了。
这实际上并不能解决问题,因为您每次保存时都必须选择该选项。这也意味着您每次保存时都必须选择一个行尾选项。其他所有文本编辑器都支持的正确行为是在加载时检测格式,并在保存时以该格式保存。没有办法让 VS2010 做那个 AFAICT,这是一种耻辱。【参考方案2】:
在 Visual Studio 2015 中(对于相同的值,这在 2019 年仍然有效),检查设置:
工具 > 选项 > 环境 > 文档 > 在加载时检查一致的行尾
VS2015 现在会在您打开不一致的文件时提示您转换行尾,因此您只需打开文件,从提示中选择所需的选项并再次保存。
【讨论】:
虽然现在这可能会有所帮助,但请注意该问题已标记为 visual-studio-2010。 这个选项的问题是它没有告诉你文档中哪些行结尾是最常见的,所以我必须先用记事本++打开文档,然后才选择正确的选项。此外,这是一个保存问题,而不是加载问题。 我遇到的问题是我打开的文件以 LF 结尾,然后我编辑或添加的每一行都会以 CR LF 结尾保存。当我再次打开文件时,它会问我要将不一致的行尾更改为什么,我会选择 LF,然后该过程将重复。这是我解决它的方法:***.com/a/47318778/2701911 这并不能解决复制粘贴具有混合行尾的文本的问题。您必须重新打开文件才能触发检查。【参考方案3】:VS2010+ 有一个插件解决方案:Line Endings Unifier。
安装插件后,您可以在解决方案资源管理器中右键单击文件和文件夹并调用菜单项Unify Line Endings in this file
可以通过以下方式进行配置
工具 -> 选项 -> 行尾统一器。
包含的默认文件扩展名列表非常狭窄:
.cpp; .c; .h; .hpp; .cs; .js; .vb; .txt;
可能想使用类似的东西:
.cpp; .c; .h; .hpp; .cs; .js; .vb; .txt; .scss; .coffee; .ts; .jsx; .markdown; .config
【讨论】:
这实际上是一个plugin,默认没有安装。 @null 感谢您指出这一点,这实际上就是我想要的。我更新了答案以更好地反映所有这些【参考方案4】:见http://editorconfig.org和https://docs.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2017
如果不存在,请为您的项目添加一个名为 .editorconfig 的新文件
操纵编辑器配置以使用您的首选行为。
我更喜欢空格而不是制表符,所有代码文件都使用 CRLF。 这是我的 .editorconfig
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.tmpl.html]
indent_size = 4
[*.scss]
indent_size = 2
【讨论】:
以上是关于阻止 Visual Studio 在文件中混合行尾的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Visual Studio 阻止我看到 .csproj 文件,有没有办法强制打开它?
如何阻止 Visual Studio 在我的代码中插入不可编辑的空白行
解决Visual Studio 2017隐藏“高级保存选项”命令