【问题标题】:Visual Studio 2015 indentation behavior for files with different indent size具有不同缩进大小的文件的 Visual Studio 2015 缩进行为
【发布时间】:2015-08-20 09:47:39
【问题描述】:

我正在使用 Visual Studio Enterprise 2015 (RTM) 并安装了扩展 Productivity Power Tools 2015。

我对 C# 的缩进设置是智能缩进、制表符 + 缩进大小 4、插入空格。我在右大括号、分号和粘贴上启用了自动格式。

但是,在我的项目中,我有许多使用缩进(空格)大小为 2 创建的旧代码文件。

namespace Foo
{
  public class Bar
  {
    public void Method()
    {
    }
  }
}

使用上面的例子,在Visual Studio 2013 Ultimate中,当给Method添加代码时,它会检测到Method的缩进是6个空格,写代码的时候会不会给body加4个空格。

同样在类中添加新方法时,它会在关闭大括号时修复缩进,以便与其他方法正确对齐。

namespace Foo
{
  public class Bar
  {
    public void Method()
    {
        // New line starts here
    }

    public void NewlyAdded()
    {
    } // Typing this fixes intendation
  }
}

现在在 VS 2015 中,这种行为已经消失了。它严格使用设置中定义的空间大小。因此,当我在方法体中编写代码时,它会插入 3*4 = 12 个空格。在 VS 2013 中键入右大括号时,它也不会对齐方法。

namespace Foo
{
  public class Bar
  {
    public void Method()
    {
            // New line starts here   
    }

        public void NewlyAdded()
        {
        } // Typing closing brace doesn't align
  }
}

更糟糕的是,粘贴代码或使用重构部分格式化周围的代码,完全弄乱了缩进。在更深的嵌套块中,它真的很烦人,必须修复缩进以使代码保持可读性。

我希望避免格式化整个文档并将这些更改检查到版本控制中,只是为了能够在编写时修改代码而不会出现缩进问题。

这是一个错误,还是我缺少 VS 2015 中的扩展或设置?

【问题讨论】:

  • @CodeCaster 在VS的“文本编辑器”->“C#”->“格式化”下。

标签: c# visual-studio-2015 auto-indent


【解决方案1】:

我在 dotnet/roslyn 项目的相关 GitHub 问题中发布了相同的问题。 https://github.com/dotnet/roslyn/issues/4351

尽管该问题截至今天仍未解决,但讨论的结果是微软不希望在 roslyn 中支持单个文件内的混合缩进。

如 GitHub 问题所述,微软对此的部分回答是新的 .editorconfig 文件:https://blogs.msdn.microsoft.com/visualstudio/2016/11/28/productivity-in-visual-studio-2017-rc/

因此,我根据我更新的代码样式重新格式化了所有遗留代码文件,并将其签入版本控制。这样,就没有缩进问题,而且 git blame 可以忽略那些空格的变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多