Visual Studio,按解决方案缩进设置


89

我正在做一些不同的事情,一些使用制表符,一些使用2个空格用于缩进,另一个用户使用4个空格用于缩进等。

在Visual Studio中设置此选项的选项位于“工具”->“选项”->“文本编辑器”-> <“语言”>->“制表符”中

是否有某种方法可以基于每个解决方案覆盖这些设置?


14
我希望它可以基于每个文件检测选项卡/缩进样式。即,当打开文件时,它将为该文件使用制表符/缩进样式。Sublime Text做到了。
IsmailS 2014年

Answers:


20

这是一种实现您正在寻找的东西的方式(当然是hacky):

1)创建一个更改缩进的宏(source

 Sub Set-Indent(indent As integer)
     Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
     Dim ts As EnvDTE.Property = props.Item("TabSize")
     Dim ins As EnvDTE.Property = props.Item("IndentSize")
     ts.Value = indent 
     ins.Value = indent 
 End Sub

2)将其与您的解决方案加载结合起来:在宏资源管理器中,选择 EnvironmentEventsSolutionEvents在第一个下拉列表中选择,在第二个下拉列表Opened中选择。现在,您有了一个宏,它将在您每次打开解决方案时触发。您只需要将解决方案映射到所需的缩进即可。


8
哈克,是的,但是有效。谢谢。对于C#开发人员来说,它是DTE.Properties(“ TextEditor”,“ CSharp”)
Mike Stockdale,2009年

2
如果将其放在一个解决方案中,则必须将其放入所有解决方案中。几乎不可用,尤其是对于公共项目。EditorConfig(下面的下一个答案)是更好的恕我直言。
rustyx '16

93

更新:VS 2017原生支持EditorConfig:https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

在VS 2010及更高版本中,有一个扩展可基于解决方案/项目根目录中的.editorconfig文件设置缩进:

http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328

Visual Studio Code也有类似的扩展


2
我喜欢-快速设置,它没有其他一些选项一样的慢速问题,它还具有额外的好处,您可以根据需要更改解决方案中各个项目的设置至。
karaken12

@ondatra当我将文件放入我的Solution文件夹(与.sln文件同时)时,仅在每个项目文件夹中,我无法使它工作。另外,它支持indent_brace_style吗?
drzaus

@ondatra刚刚发现它不支持indent_brace_style尚未 -我已经开了一个问题吧。
drzaus

谢谢。请注意,我必须使用来自github.com/editorconfig/editorconfig/issues/116的0.4.0更新与vs2012update3
SteelBytes 2013年

1
VS2017 v15.3现在支持许多编码样式属性
弗雷德里克

7

现在还有另一个名为“ Rebracer”的加载项...链接在这里:http ://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58


Rebracer扩展程序效果很好。由于它与Visual Studio的内置设置集成并对其进行了修改,因此无需花费大量资源即可达到目的。
Alex Essilfie 2015年

4

从VS扩展EditorConfig(http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328)网站上:

EditorConfig项目定义了一种简单的文件格式,用于配置常用的文本编辑器选项,例如缩进大小。这些配置文件旨在与项目的源代码并排放置,从而允许文本编辑器逐个文件地使用正确的选项。EditorConfig项目为许多常见的文本编辑器提供了插件,从而使格式完全跨平台。

(强调我的)

完全披露:我无法亲自对其进行测试(因为ReSharper接管了)。


2

VS2017 RC添加了对.editorconfig格式的支持。


5
是的,但是完成文件的示例将是不错的:)
toddmo


0

更新:缩进似乎不是由Resharper管理的,因此此答案实际上并未解决特定问题。但是,它确实适用于一般术语;即“ Visual Studio,根据解决方案设置”,以防有人在这里绊倒寻找。


如果您使用Resharper,则可以仅保存解决方案的格式设置(实际上是任何设置)。您可以进一步指定是只为您(即未提交到源代码管理)还是共享特定于解决方案的设置(即,提交到源代码管理)。

Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout

然后在窗口底部,Save To选择“ Solution XYZ personal”(或共享,取决于您的目的)。

这将创建一个YOURSOLUTION.sln.DotSettings.user具有以下值的xml文件:

<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>

转载器设置-仅保存为解决方案


1
使用哪种重新共享设置将缩进设置为2个空格或4个空格?
Endy Tjahjono

@EndyTjahjono是VS设置:工具>选项>文本编辑器>(语言)>选项卡>“制表符大小”或“缩进大小”。VS2012的好处是您可以使用快速启动搜索(CTRL+Q)并键入“制表符”以直接跳至所有可用的语言设置。
drzaus13年

但是那个VS设置是全局的(不是按解决方案/项目),您建议使用resharper,因为它具有按解决方案/项目的设置?
Endy Tjahjono

您了解我-我正在更改Resharper中的其他设置,因此我认为它也可以管理缩进。我只是再次浏览了reshaper的选项卡设置,但找不到。因此,警告是“几乎所有设置,除了缩刀无法控制的设置,例如缩进尺寸”。我将更新答案,由于我没有引起足够的重视,请随时投票。
drzaus

感谢更新。仅供参考,我不是要纠正您,而是实际上是希望reshaper具有每个项目的缩进设置,而我只是没有找到设置它的地方。
Endy Tjahjono

0

因此,被接受的解决方案显示“您只需要将解决方案映射到所需的缩进即可”,这很好,除了您如何做到这一点?在浪费大量时间试图弄清楚这一点之后,我在这里找到了我更喜欢的方法。此方法将加载任意数量的导出设置,这些设置对于每个解决方案可能是不同的。设置可以包括任何内容,从缩进到颜色甚至是窗口布局(我认为)。

  • 在Visual Studio 2008中,打开“工具”>“宏”>“宏资源管理器”
  • 双击MyMacros> Module1(如果没有Module1,请右键单击MyMacros并选择“新建模块...”以创建它)。
  • 在宏资源管理器窗口中,双击左侧的“ EnvironmentEvents”。
  • 在左上角的下拉菜单中,选择“ SolutionEvents”。
  • 在右上角的下拉菜单中,选择“已打开”。
  • 将自动添加用于处理SolutionEvents.Opened事件的代码。将该代码更改为以下内容:

    Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
        Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
        If Not item Is Nothing Then
            'MsgBox("Uncomment this to see a message when settings are loaded")
            Dim name = item.FileNames(1)
            DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
        End If
    End Sub
    
  • 保存宏。

  • 使用工具>选项将您的UI更改为具有选项卡设置以及您想要设置的其他设置。
  • 工具>导入和导出设置...>导出选定的环境设置>下一步
  • 要仅导出标签设置,请取消选中“所有设置”,然后选中“选项”>“文本编辑器”>“ C / C ++”
  • 单击“下一步”,然后将“ solution.vssettings”键入“您要为设置文件命名的名称?”。并将文件保存到您想要使用这些设置的解决方案的任何位置。
  • 将solution.vssettings拖到“解决方案资源管理器”窗口中的任何位置。
  • 退出Visual Studio,下一次打开包含solution.vssettings的解决方案时,它应该加载这些设置。

如果宏不运行,则可能是由于MS安全修补程序。基于,添加以下字符串:

<AllowDComReflection enabled="true"/>

以下三个文件中<runtime>标记下面:

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"

确保使用管理员权限启动用于编辑这些文件的编辑器(即,右键单击记事本,然后选择“以管理员身份运行”)。

我还找到了一个插件,插件应该与上面建议的宏具有相同的功能,但是由于某种原因,在我运行其安装程序后它没有执行任何操作。


0

clang-format提供了用于格式化源代码的非常复杂的选项。

Visual Studio插件非常基本,即它不会自动运行,但是可以很好地工作(即在手动调用时)。

http://llvm.org/builds/

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.