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

时间:2013-08-22 14:58:21

标签: c# visual-studio refactoring

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

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

我不能再忍受了我已经厌倦了一直使用Ctrl + M + O,然后再次重新找到已编辑的字段。 VS2010有任何选项或扩展名,可以解决我的问题吗?

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

5 个答案:

答案 0 :(得分:3)

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

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

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

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

Code Collapsing works perfectly upto this point

并考虑AddNumbers下面还有更多功能也会崩溃。现在如果我理解你,那么你说I edit MultiplyNumbers and remove its starting curly brace {`,这下面的所有代码点自动扩展。

Misplaced 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.

希望这可以防止您遇到的问题。如果您还有其他任何问题,请告诉我。

答案 1 :(得分:1)

我正在使用折叠自己来创建包含本地化文本的静态类,能够hide / show事情非常好,类似于TreeView对节点的处理方式:

Static strings

我从来没有遇到过所描述的问题,也没有对VS所做的事感到恼火。

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

看看:

Members list

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

我见过很多像#region的人。但是你可以通过使用partial并将单个类拆分成碎片来实现相同的(如果不是更好的话)。

p.s。:以及最后一个问题,为什么不首先选择需要删除的内容,然后按Delete?或者那个工具会为你做什么?自动浏览源,检测并删除?如果你是一名程序员,那么制作能够做到这一点的软件不仅仅需要在这里写下你的问题= D

答案 2 :(得分:0)

我不确定这里究竟是什么问题,因为这似乎不是正常的行为(我从来没有经历过这种行为)。

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

首先,有人在关于自定义visual studio intellisense的另一个主题上给出了一个非常好的答案:Custom Intellisense Extension

如果这不是一个选项,或许可以查看为Visual Studio 2010提供的扩展。

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

很抱歉,我无法提供任何其他帮助,但如果您可以提供更多信息,那么我们可以找到解决方案(例如,其他方法的意思是扩展等)。

答案 3 :(得分:0)

嗯,你遇到的这个问题是一个普遍存在的问题,它有时会令人恼火。根据我的经验,视觉工作室会变得混乱,特别是当您在大型代码文件中编写大量块语句时,无论何时发生这种情况,您都可以保存您的工作并重新启动VS.但要回答您的问题,请确保首先尝试打开要编辑的任何折叠代码以及复制/剪切尝试在执行编辑选项之前首先突出显示折叠代码,这会通知编辑器您要编辑突出显示的代码段。希望它有所帮助

答案 4 :(得分:0)

vs options

也许这会有所帮助吗?