Visual Studio C# statement collapsing
当编辑非常长的代码块(无论如何都应该重构,但这超出了这个问题的范围)时,我经常渴望能够像折叠函数块那样折叠语句块。也就是说,如果负号图标出现在用大括号括起来的代码大纲上,那就太好了。它似乎适用于函数、类、区域、名称空间、using,但不适用于条件块或迭代块。如果我能把像ifs、switches、foreaches这样的东西折叠起来,那就太棒了!
Google进入一点,我发现显然在VS中的C++概述允许这一点,但是C在VS中的概述没有。我不知道为什么。如果我选择C格式,即使是记事本++也会折叠,所以我不明白为什么Visual Studio不这样做。
是否有人知道将启用此行为的VS2008外接程序?或者某种隐藏的设置?
编辑添加:插入区域当然是一个选项,我已经想到了,但坦白地说,我不应该在已经用大括号包装的区域中包装东西…如果我要编辑现有的代码,我只需重构它,以便更好地分离关注点。(用新方法而不是区域包装;)
从Visual Studio 2017开始,语句折叠是内置的。
从Vs2010版本开始,有几个扩展对Vs2017之前的版本执行此任务:
- C大纲
- C大纲2012年(@msdn)
- C大纲2013年(@msdn)
- C大纲2015年(@msdn)
- Visual Basic和C大纲视图
最后一个扩展只支持vs 2015和vs 2017,但它是最强大的。它支持折叠块内的语法着色,更具容错性和优化性。
If the extension doesn't seem to install after you used a browser to download it, try using the built-in Visual Studio extension manager.
号
我不知道加载项,但您提到了区域,我认为这样做没有什么错…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | foreach (Item i in Items) { #region something big happening here ... #endregion #region something big happening here too ... #endregion #region something big happening here also ... #endregion } |
编辑:回答问题的编辑:你是对的,在任何地方粘贴一堆区域都不理想,重构可能是解决问题的方法。但你似乎在寻找一种神奇的东西来为你"组织"代码,我认为这并不存在。
可以折叠Visual Studio中的特定文本块,但必须关闭自动大纲显示。
在代码窗口中单击鼠标右键并选择(大纲显示停止大纲显示)
然后,选择一些文本,右键单击并选择(大纲隐藏选择)
再次启用自动大纲显示时,自定义"区域"将不再折叠。
让我说些不同的话:按cx1〔0〕或在编辑>大纲>隐藏选择中它很有用。
只要将函数保持在同一代码层次级别,Visual Studio 2008就支持函数内部的区域。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #region Won't work for(int i = 0; i<Count; i++) { //do something #endregion } for(int i=0; i<Count; i++) { #region Works fine //do lots of stuff #endregion } |
号
此功能已添加到Visual Studio 2010的C编辑器中。我找不到验证它是否真的被放入的源代码,但我记得在Dev10团队成员的一个博客上看到过它,讨论自beta 1以来的变化或其他什么。作为安慰,这里有一条微软的评论建议他们添加它。
在VS2017中,您可以突出显示代码的一部分,右键单击,大纲>隐藏选择。这将折叠代码并为突出显示的部分提供切换。
我在Visual Studio 2013中找到了它,并发现它非常有用。即使用在代码周围加上简单的大括号,它也能工作。}
分享之后,我发现有人也提到了这个链接。我也支持这个工具。
C Visual Studio 2013大纲工具
coderush将为您概述所有代码块。不确定它是否允许您展开/折叠块,但大纲显示是下一个最好的方法。我使用resharper而不是coderush,据我所知,它也不提供块崩溃:(
我将在这里补充一点,在Vs2010中,微软已经使用托管扩展框架(mef)添加了wpf修饰器功能,这将允许我们扩展源代码编辑器,以更好的方式组织它们,使之更易于阅读和访问。
例如,ScottGu在2008年的pdc上演示的总结评论可视化工具。
因此,希望开发人员有一个更好的明天:)
#区域,结束区域是智能选项。