我正在做一些不同的事情,一些使用制表符,一些使用2个空格用于缩进,另一个用户使用4个空格用于缩进等。
在Visual Studio中设置此选项的选项位于“工具”->“选项”->“文本编辑器”-> <“语言”>->“制表符”中
是否有某种方法可以基于每个解决方案覆盖这些设置?
Answers:
这是一种实现您正在寻找的东西的方式(当然是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)将其与您的解决方案加载结合起来:在宏资源管理器中,选择
EnvironmentEvents
,SolutionEvents
在第一个下拉列表中选择,在第二个下拉列表Opened
中选择。现在,您有了一个宏,它将在您每次打开解决方案时触发。您只需要将解决方案映射到所需的缩进即可。
更新: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也有类似的扩展。
.sln
文件同时)时,仅在每个项目文件夹中,我无法使它工作。另外,它支持indent_brace_style
吗?
indent_brace_style
尚未 -我已经开了一个问题吧。
现在还有另一个名为“ Rebracer”的加载项...链接在这里:http ://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58
从VS扩展EditorConfig(http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328)网站上:
EditorConfig项目定义了一种简单的文件格式,用于配置常用的文本编辑器选项,例如缩进大小。这些配置文件旨在与项目的源代码并排放置,从而允许文本编辑器逐个文件地使用正确的选项。EditorConfig项目为许多常见的文本编辑器提供了插件,从而使格式完全跨平台。
(强调我的)
完全披露:我无法亲自对其进行测试(因为ReSharper接管了)。
您可以通过以下方式设置“插入制表符/空格”设置 props.Item("InsertTabs") = bool
更新:缩进似乎不是由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>
CTRL+Q
)并键入“制表符”以直接跳至所有可用的语言设置。
因此,被接受的解决方案显示“您只需要将解决方案映射到所需的缩进即可”,这很好,除了您如何做到这一点?在浪费大量时间试图弄清楚这一点之后,我在这里找到了我更喜欢的方法。此方法将加载任意数量的导出设置,这些设置对于每个解决方案可能是不同的。设置可以包括任何内容,从缩进到颜色甚至是窗口布局(我认为)。
将自动添加用于处理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
保存宏。
如果宏不运行,则可能是由于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"
确保使用管理员权限启动用于编辑这些文件的编辑器(即,右键单击记事本,然后选择“以管理员身份运行”)。
clang-format提供了用于格式化源代码的非常复杂的选项。
Visual Studio插件非常基本,即它不会自动运行,但是可以很好地工作(即在手动调用时)。