Vb.net Visual Studio';s的VB智能缩进和格式化文档很疯狂--如何修复或解决?
我在这里搜索了一下,我很惊讶没有人问这个问题。对于多行语句,VisualStudio2010的VB智能缩进是否严重中断?还是我做了/设置了错误的事情?我将其设置为4个字符的缩进,并保留制表符。在VB中键入一个自然返回的多行语句会产生以下结果(更改属性名称以保护无辜者) 怎么会有人想用这种方式格式化他们的代码?我想,也许我需要重新格式化(Ctrl+K Ctrl+D): 为了更好的衡量,我再次尝试重新格式化。瞧,它把它推得更远了。我又推了一下,它又动了一些。最后,经过四次重新格式化后,我的代码如下所示:Vb.net Visual Studio';s的VB智能缩进和格式化文档很疯狂--如何修复或解决?,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我在这里搜索了一下,我很惊讶没有人问这个问题。对于多行语句,VisualStudio2010的VB智能缩进是否严重中断?还是我做了/设置了错误的事情?我将其设置为4个字符的缩进,并保留制表符。在VB中键入一个自然返回的多行语句会产生以下结果(更改属性名称以保护无辜者) 怎么会有人想用这种方式格式化他们的代码?我想,也许我需要重新格式化(Ctrl+K Ctrl+D): 为了更好的衡量,我再次尝试重新格式化。瞧,它把它推得更远了。我又推了一下,它又动了一些。最后,经过四次重新格式化后,我的代码如下所
Public Sub Sub1()
Dim foo As New ImageBase With {.FileName = "test",
.Format = MyEnumForImageFormat.jpg,
.IsReallySpecial = False,
.Name = "testN",
.SourceId = Guid.NewGuid(),
.VariantName = "TestV",
.Width = 800,
.Height = 600}
End Sub
更好,但我们真的希望连续的行只缩进一个空格?为什么我要重新格式化四次才能得到我想要的?最重要的是,尝试在上方添加一个属性定义不会使任何内容保持对齐-默认缩进是按随机确定的空格和制表符数量向右级联偏移
使用旧式的延续字符没有帮助我怎样才能有任何程度的理智的智能缩进?我发现这也是一个烦恼。可以关闭Vb.Net的漂亮列表-看看这个问题: 在我看来,它走得太远了,但它应该停止你所说的问题
编辑:您可能还想使用自动缩进设置;我认为默认设置为“smart”。您会发现自动缩进的好坏取决于您选择拆分行的确切位置。在您的示例中,我的风格是将开始的大括号和第一项带到下一行,之后缩进会表现得更好
Public Sub Sub1()
Dim foo As New MyClassA With
{.FileName = "test",
.Format = MyEnumForImageFormat.jpg,
.IsReallySpecial = False,
.Name = "testN",
.SourceId = Guid.NewGuid(),
.VariantName = "TestV",
.Width = 800,
.Height = 600}
End Sub
我不想假设太多,我相信多行语句中每一行的缩进是由前一行控制的。但是,通过选择这种样式,您会发现使用自然返回来添加项目,以正确定位它们自己。当将任何粘贴片段复制到不同缩进级别的目标中时,这仍然会导致缩进问题,但由于返回位置本身正确,因此手动重置每一行(重复Down、End、Delete和Enter)并没有太大问题
类似的解决方案对于多行lambda函数很有用,但是这些函数的性能优于直线多行语句。正确定位开始调用会自动更正整个例程的缩进
这不太好,缩进浮动:
Public Sub Sub1()
Dim a As New Action(Sub()
Dim b As Double = 4.0
Dim c As Double = 5.0
Dim d As Double = b * c
End Sub)
End Sub
这在压头上表现良好:
Public Sub Sub1()
Dim a As New Action(
Sub()
Dim b As Double = 4.0
Dim c As Double = 5.0
Dim d As Double = b * c
End Sub)
End Sub
正如我个人喜欢的风格一样,其他人可能会以不同的外观获得相同的结果。关闭“漂亮列表”并不能解决此问题。不过,谢谢你的链接。(为了避免这个问题,我必须完全关闭智能缩进。)我过去在这方面遇到过一些问题,我添加的电动工具越多,情况似乎就越糟。然后我的同事换成了ReSharper。
Public Sub Sub1()
Dim a As New Action(Sub()
Dim b As Double = 4.0
Dim c As Double = 5.0
Dim d As Double = b * c
End Sub)
End Sub
Public Sub Sub1()
Dim a As New Action(
Sub()
Dim b As Double = 4.0
Dim c As Double = 5.0
Dim d As Double = b * c
End Sub)
End Sub