阻止Visual Studio在文件中混合行尾


123

在Visual Studio 2010中打开基于文本的文件时,它将使用CRLF(而不是原始文件的行尾格式)写入我的编辑内容。如何阻止VS执行此操作?任何半个体面的编辑器都应具有此功能。

更糟糕的是,由于VS用CRLF编写了带有部分内容的文件,因此(再次打开文件时)它将出现一个对话框,要求我转换文件行结尾。


试试这个外接:Strip'em
使得


1
截至2016
克里斯·马里西克

2
这些天我已经离开了.NET,对MS似乎每个季节都在改变着眼点而忽略了诸如此类的简单问题,已经感到厌烦。很高兴看到他们终于解决了它。
布雷特·瑞安

Answers:


84

在“ 文件”菜单上,选择“ 高级保存选项”,您可以在那里进行控制。

编辑:这是文档,您应该先打开一个文件。


5
我的VS2010 Ultimate安装中没有此菜单项。
Palantir

6
我在VS2010 Ultimate中确实具有此设置,但是该选项不是全局持久性选项,仅对当前编辑器会话有效。我想要的是让VS在编辑文件时尊重当前打开的文件的行尾。
布雷特·瑞安

2
文件+另存为,单击保存按钮上的箭头。相同,但特定于文件。
汉斯·帕桑

13
对于那些没有在看到该命令File的菜单,你可能需要去ToolsCustomizeCommands标签,Menu BarFileAdd Command...FileAdvanced Save Options...OkClose。现在您应该可以选择了。
davidg

92
这实际上并不能解决问题,因为每次保存时都必须选择该选项。这也意味着您每次保存时都必须选择一个行结束选项。其他所有文本编辑器都支持的正确行为是检测加载时的格式,并在保存时以该格式保存。没有办法让VS2010做到这一点,这真是遗憾。
乔恩·瓦特

70

在Visual Studio 2015中(该值在2019年仍然保持相同),请检查以下设置:

工具>选项>环境>文档>检查加载时行尾是否一致

当您打开不一致的文件时,VS2015现在将提示您转换行尾,因此您所需要做的就是打开文件,从提示中选择所需的选项,然后再次保存。


4
尽管这现在可能会有所帮助,但请注意,该问题被标记为visual-studio-2010
dakab 2015年

4
此选项的问题在于它不会告诉您文档中最常见的行尾,因此我必须先在Notepad ++中打开文档,然后才选择正确的选项。除此之外,这是一个保存问题,而不是加载问题。
战略思想家

3
我遇到的问题是我正在打开带有LF结尾的文件,然后我编辑或添加的每一行都将带有CR LF结尾。当我再次打开文件时,它将询问我要将不一致的行尾更改为什么,然后选择LF,然后重复该过程。这是我的解决方法:stackoverflow.com/a/47318778/2701911
FragmentalStew

这不能解决复制粘贴带有混合行尾的文本的问题。您必须重新打开文件才能触发检查。
安德里

22

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

11
这实际上是一个插件,默认情况下未安装。
无效

1
@null感谢您指出,这实际上是我想要的。我更新了答案以更好地反映所有这一切
克里斯·马里西克

11

请参阅http://editorconfig.orghttps://docs.microsoft.com/zh-cn/visualstudio/ide/create-portable-custom-editor-options?view=vs-2017

  1. 如果不存在,请为您的项目添加一个名为.editorconfig的新文件。

  2. 操纵编辑器配置以使用您的首选行为。

我更喜欢使用空格而不是制表符,而对于所有代码文件,则更喜欢使用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 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.