2010-02-03 49 views
5

在VS 2008中,有一些XML代码片段似乎非常棒:)但是,我们创建的代码片段似乎并未正确缩进。例如,如果我们有以下代码:VS 2008代码片段缩进

{ 
    ... 
    { 
    ... 
     { 
      InsertSnippet here. 

我们得到这样的:

{ 
    ... 
    { 
    ... 
     { 
      FirstLineofSnippet 
SecondLineOfSnippet 
ThirdLineOfSnippet 

有没有什么办法让它使所有线条保持相同的缩进?

+4

'CTRL-K,D'会做诀窍=) – 2010-02-03 00:25:52

+0

@Rubens - 没有人有更好的主意,所以让它回答,我会给你正确答案的功劳。 – Daniel 2010-02-03 17:42:54

+0

让我们再保留几天;你可以在几天内创造一笔赏金,也许有人会有一个想法。 – 2010-02-03 18:45:48

回答

0

粘贴没有缩进的第一行,然后选择块和标签,直到您获得想要的缩进的整个块。 AFAIK你看到的是标准行为,它发生是因为你粘贴的位置没有按照你想要的缩进。

0

我的unit test snippet似乎正确缩进。这可能是由于代码被包装在CDATA块中。一旦VisualStudio被添加到代码中,VisualStudio也倾向于自动格式化该块。你的代码片段和闭合片段一样多吗?如果两者匹配,并且代码段插入到有效/可编译的位置,则它应该自动格式化。

0

尝试在Tools>Options>TextEditor>C#>TabsInsert spaces具有结构转换到Keep tabs,它为我工作。

0

似乎Visual Studio会在插入的行上进行自动格式化。我的代码片段没有正确格式化(即缩进),既不通过片段插入,也不通过手动格式(Ctrl-K-F)格式化。它包含“委托{...}”,也许格式化程序无法处理这个问题。

4

这通常表示您插入的代码在语义上是不正确的 - 在插入时,而不是在填充代码段值时。

为了防止出现这种情况,您可以在片段中使用默认值以使剪切的syntactivaly正确。例如。为一个函数声明参数列表:

<Literal Editable="true"> 
    <ID>methodArguments</ID> 
    <ToolTip>methodArguments</ToolTip> 
    <Default>params object[] args</Default> 
    <Function> 
    </Function> 
</Literal> 

<Default>元素提供声明。因此,在一个片段声明功能可按使用这将导致这样的:

public void FunctionName(params object[] args) { } 

然后它可以让你与你所需要的任何参数的声明取代params object[] args