如何在删除{}括号时阻止VisualStudio扩展所有内容

我几天前问过这个问题,但没有得到答案,所以我会再试一次。

我喜欢通过折叠方法,评论和xml摘要来保留我的代码,而这些摘要我目前没有使用。 但是,每次我在方法,循环,切换语句或代码的任何部分(任何包含{}大括号)中编辑一些大括号时,下面的所有内容都会在1秒后展开。 一切都展开直到当前文件(或区域,如果编辑的代码位于其中)时结束。

我无法忍受它我已经厌倦了一直使用Ctrl + M + O ,然后再次重新找到编辑的字段。 有没有VS2010的选项或扩展,这将解决我的问题?

更新我开始意识到无法解决问题。 不过,我也可以接受一个修改问题的答案: 有没有一种方法或工具可以让我自动删除仅包含1条指令的{}括号对? 这对我的问题是一个可接受的解决方法。


我将自己折叠为包含本地化文本的静态类,并且能够hide / show事物相当不错,类似于TreeView如何处理节点:

静态字符串

而且我从未遇到过所描述的问题,或者被VS所做的事情所困扰。

但是,当您编辑代码时,对于我认为的Intellisense ,这种行为有点太过分了(正如另一个答案中所述)。 也许你应该改变你的“思维方式”?

看一看:

会员名单

您可以在成员之间快速导航,或者在展开所有代码的同时使用此特殊窗口对其进行简要概述。

我见过很多像#region这样的人。 但是你可以通过使用partial和分裂的单个类来实现相同的(如果不是所有措施都更好)。

ps:在最后一个问题中,为什么不先选择需要删除的内容,然后按Delete ? 或者那个工具会为你做什么? 自动检查源代码,检测并删除? 如果你是一名程序员,那么制作软件就不应该只是在这里写下你的问题= D


如果我明白你需要什么,那么你正在问how to stop the code below the line that I am editing from automatically expanding. 我想告诉大家,没有任何解决方案来自官方来源或任何东西。代码折叠了像Visual Studio这样的理想代码编辑器的功能。

让我解释为什么发生这种情况以及如何防止它发生。首先让我解释代码崩溃的基本条件。理想代码编辑器利用Lexers和Parsers为语言提供支持,解析器使用正则表达式来匹配特定语言由编码员或某人输入的语法,在此序列代码编辑器中存储所有特定符号所在的位置;{ and }"

为了使代码崩溃有效地工作,只要源代码中的某些内容与语言特定的语法不匹配,解析器标志就会报告编辑和格式化,就必须在编辑的代码中按照精确顺序指定相同数量的这些符号这个错误的引擎。

回到你的问题,让我们谈谈你面对的是什么,为了更好地理解它,让我们考虑一个简单的代码块;

Code Collapsing完美地适用于这一点

并考虑在AddNumbers下面还有更多的函数也会被折叠。现在,如果我理解了你,那么你说如果I edit MultiplyNumbers and remove its starting curly brace {`,那么低于这一点的所有代码都会自动扩展。

错位的开始大括号

如果是这种情况,那么问题是因为解析器尝试匹配语言语法,并在AddNumbers's终止大括号中找到此点下方的任何终止大括号。

更新:

在一行中,这个问题没有解决方案,这是因为Visual Studio执行实时解析,这就是它如何实时显示错误。实际上,这不是一个问题,这是为什么从来没有报告过,因为它有但是你可以通过改变你的编码习惯来防止这种情况,比如当你创建一个函数时假设SomeFunction(int a,int b),试着先完成下面的函数的外侧;

private void SomeFunction(int a,int b)
{
//Write code later.
}

首先创建如上的函数大纲,然后像下面那样编写一些代码;

private void SomeFunction(int a,int b)
{
int z=a+b;
Console.WriteLine(z);

int x=a*b;
Console.WriteLine(x);

int p=a/b;
Console.WriteLine(p);

int q=a-b;
Console.WriteLine(q);
}

接下来考虑你正在写if statement ,首先完成这样的外侧;

if(//We'll define condition later)
{
//Write function body later.
}

如果您在Visual Studio中使用过代码片段,那么您可能已经注意到Visual Studio首先生成snipett的外侧,然后将插入符号放到第一个参数中。

所以,这些是一些准则,可以防止这个问题。

现在转向解决方案, to prevent this situation when you create a function try to first place its { and } braces before writing any code in it.

希望这可以防止你面临的问题。如果还有更多你面临的问题,请让我知道。


我不确定这个问题到底是什么,因为这看起来不像正常行为(我从来没有经历过)。

有几个选项虽然(不知道更多关于这个问题),可能会帮助你。

首先,有人在关于自定义视觉工作室intellisense的另一个主题:Custom Intellisense Extension中给出了非常好的答案

如果这不是一种选择,那么可以查看为Visual Studio 2010提供的扩展。

生产力电动工具可能会帮助你解决一些重构问题。 您可以通过工具 - 扩展Mananger通过Visual Studio获得此信息。 然后选择选项并安装它。 电动工具相当有限,所以这可能还不够。 我相信人们可以提供其他的选择,但我肯定会推荐ReSharper:http://www.jetbrains.com/resharper/。 您可以获得免费试用,但在此之后您必须为此付费。 我使用它,它提供的扩展非常棒。 您可以完全改变Visual Studio的行为方式,以满足您的个人偏好。

抱歉,我无法提供任何其他帮助,但如果您可以提供更多信息,那么也许我们可以找到一个解决方案(例如,其他方法意味着什么正在扩展等)。

链接地址: http://www.djcxy.com/p/73875.html

上一篇: How to stop VisualStudio from expanding everything when deleting { } brackets

下一篇: style properties of a Backbone.View