配置Visual Studio使用UNIX换行符

100

我们希望使用Visual Studio 2005在本地使用SVN仓库的副本。这个本地副本已经被Mac OS X检出(更新和提交只会在Mac OS X下进行,所以没有问题),因此行尾是UNIX风格。

我们担心Visual Studio会引入Windows风格的行尾。有没有可能强制Visual Studio使用UNIX风格的行尾呢?

10个回答

57
以下是关于Visual Studio Community 2017的一些选项:
1. "文件 > 高级保存选项"由Microsoft删除,原因是“不常用”。无论这意味着什么。 https://developercommunity.visualstudio.com/content/problem/8290/file-advanced-save-options-option-is-missed.html 您可以通过转到“工具 > 自定义”,然后选择“命令”选项卡,在“菜单栏”旁边选择下拉菜单,选择“文件”,然后选择“添加命令”>“文件”>“高级保存选项”将其添加回去。然后,您可以使用“向下移动”在文件菜单中重新排序它。
2. 我不知道您是否需要为每个文件设置高级保存选项,但它可能会防止我遇到的问题,即我的Visual Studio在统一使用LF的文件中不断添加CL RF行结束符。
  1. 但我更进一步,通过转到“工具>扩展和更新>在线”,然后在右侧的搜索栏中搜索“行尾”来添加一个名为“Line Endings Unifier”的扩展。我将使用它来自动强制所有脚本以我选择的统一行尾保存,但您也可以做更多。

    https://marketplace.visualstudio.com/items?itemName=JakubBielawa.LineEndingsUnifier
  2. strip'em是另一个类似于Line Endings Unifier的解决方案。http://www.grebulon.com/software/stripem.php

我不确定它们之间的区别或优缺点。主要是因为Line Endings Unifier在Visual Studio Marketplace中,所以我主要使用它。我想我过去用过所有这些方法,但我的记忆有点模糊。


1
截至2018年7月,另一种选择是:选择“文件”->“另存为”,然后在保存对话框中,“保存”按钮有一个下拉菜单,可以选择编码方式。您可以在那里设置换行符。 - Sudsy
2
@Sudsy 我已经测试过了,并且确认它可以在Visual Studio Community 2017版本15.7.4中工作。根据Zero的说法,使用高级保存选项时,“更改设置将适用于Visual Studio中创建的所有新文件”。我想知道这种方法是否也是如此。 - FragmentalStew
感谢您使用LineEndingsUnifier。您能否更新它以适用于VS2022? - Charles Burns

57

我发现这个问题和答案非常令人困惑,特别是因为我主要在Linux和PhpStorm中开发,从来没有遇到过这些问题。

我发现对于Visual Studio 2019,只有Munther Jaber的解决方案与@jcox的.editorconfig更改新文件时才有效。

然而,由于不熟悉Visual Studio本身,我花了很长时间才找到换行符选项...

所以我制作了一个视频来展示如何配置。 https://youtu.be/YfN3igHXTPo

更新:我学会了如何使用FFMPEG制作动态GIF,以便可以将视频嵌入到这里! enter image description here


2
我看不到那个栏中右下角的按钮,你怎么激活它们? - Oneiros
2
请确保您使用的是Visual Studio而不是Visual Studio Code。这是问题和答案中的一个重要的混淆点... - Theodore R. Smith
1
你的Youtube视频在短短31秒内改变了我的生活。为了避免其他用户困惑,我要说一下,这个gif漏掉了创建.editorconfig文件的关键步骤! - Chucky
如果您在使用Visual Studio时没有看到图片中显示的“行结尾”切换按钮,请前往“工具/选项/文本编辑器/常规”启用它。它位于底部的“显示”下面,与行/列、选择、插入/覆盖和制表符/空格的切换按钮一起。 - Michael Bray

56

警告:这个解决方案不再适用于Visual Studio 2017及更高版本。取而代之,需要使用jcoxMunther Jaber的两个答案。我将它们合并成一个答案

如原帖所述,在“文件 > 高级保存选项”中,选择Unix换行符。

这只会影响新创建的文件。要修复以前创建的任何文件,可以逐个文件进行修复,或者您可以搜索工具来批量修复。


10
在VS2010 Express中找不到“文件>高级保存选项”,有没有其他替代方法? - xiao 啸
7
那似乎只会改变当前打开的文件,对吗? - Albert
2
它将更改新创建文件的默认设置。它不会修改已经具有一致行尾的已创建文件。默认情况下,Visual Studio将在您打开具有混合行尾的文件时警告您,并提示您选择一致的行尾。 - Zero
39
这种方法不具扩展性,每天都不能只是简单地“高级保存选项”300个源文件。微软设计Visual Studio的方式让我感到惊讶。 - CoffeDeveloper
1
根据我之前的评论,@GameDeveloper,更改设置将应用于在Visual Studio中创建的所有新文件。要批量更改现有文件,需要使用不同的工具-许多版本控制系统都有自动化脚本来检查或修改源文件。 - Zero
显示剩余8条评论

33

VS2017支持.editorconfig文件,可以与您的项目一起检查。这是设置Unix行结尾的相关命令:

end_of_line = lf

2
这对我只适用于新文件。虽然如此,我已经在我的答案中包含了它。https://dev59.com/v2865IYBdhLWcg3wduWH#63109256 - Theodore R. Smith
注意:正在处理一个Unity项目...我在Assets文件夹中找到了我的.editorconfig文件。 - KevinVictor
适用于我的VS 2019 Unity项目。不需要安装任何额外的插件。 - mcExchange

9
"

文件 > 高级保存选项",选择Unix行结尾可以基于文件进行工作。

或者您可以使用Visual Studio的Strip'em插件

此插件在Visual Studio中保存文件时转换文本格式。

更多信息请参见:http://www.grebulon.com/software/stripem.php

"

6

有一些VS扩展程序可以帮助解决这个问题。我建议使用Trim line ends on save。这个扩展程序是免费的,开源的。还有类似的扩展程序可能适合您,只需转到工具 | 扩展和更新并在线搜索“行尾”即可。


2
对我而言,比“高级保存选项”更有价值的是那些提到了不同扩展名的答案(尽管我最终决定采用另一个扩展名:行结束符统一工具)。 - Trevor

5

对于Visual Studio 2019 for Mac版本

前往项目>方案选项>源代码>代码格式化>文本文件,在行终止符下拉框中选择Unix/Mac。

图片


4
图片描述在此 LF可以被点击,您可以选择使用LF或CRLF。

17
几乎可以确定是Visual Studio Code而不是Visual Studio。 - jcox
4
对于使用VS 2019的人(我不确定旧版本),在文本编辑器的右下角有一个类似的选项,比使用“高级保存选项”更容易。 - David DiGioia
这里有一个视频,适合所有和我一样感到困惑的人:https://dev59.com/v2865IYBdhLWcg3wduWH#63109256 - Theodore R. Smith

1

在Visual Studio 2017 for Mac中可以强制换行

  1. 转到“工具”>“添加自定义工具…”。
  2. 在出现的对话框中,向下滚动左侧菜单至“文本编辑器”部分,并选择“常规”。
  3. 在第一个选项换行符转换中,将保留换行符不变更改为始终转换换行符

screenshot of dialog


-1
在最新的Windows版本中,您可以前往:
File > Preferences > Settings > Text Editor > Files > Eol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接