【问题标题】:Can Visual Studio 2017 be set to only auto-format leading whitespace?Visual Studio 2017 可以设置为仅自动格式化前导空格吗?
【发布时间】:2018-12-22 12:17:17
【问题描述】:

是否有任何解决方案(设置或其他方式)强制 Visual Studio 仅自动格式化一行的前导空格,之后什么都没有?这主要是在 Visual C# 或 Visual C++ 项目中。

作为一个故意设计的例子,我想要这样的代码:

     namespace Foo
{
    public static class Bar
        {
private static int a                = 1;
        public  static int some_very_long_b = 2;
    public  static double Derp(double value)
    {
    if      (value < a               ) return 0;
       else if (a     > some_very_long_b) return 1;
     return value;
}
}
}

自动格式化为:

namespace Foo
{
    public static class Bar
    {
        private static int a                = 1;
        public  static int some_very_long_b = 2;

        public  static double Derp(double value)
        {
            if      (value < a               ) return 0;
            else if (a     > some_very_long_b) return 1;
            return value;
        }
    }
}

请特别注意,当范围正确缩进时,行的初始前导空白之后的任何间距都保持不变。

这个问题的另一种表述方式是:当自动格式设置超出自动格式设置的要求时,我可以防止自动格式与行内空格混淆吗?

如果启用了Formatting &gt; Spacing &gt; Set spacing for operators &gt; Insert space before and after binary operators 设置,我可以将a+b 转换为a + b,但我希望通过某种方式使a + b 不会删除其多余的空格。


我查看了Options &gt; Text Editor &gt; C# &gt; CodeStyle &gt; Formatting,我相当确定那里的选项不提供这样的功能。我有什么遗漏吗?

编辑:我添加了一个issue for this on the dotnet roslyn github repo

【问题讨论】:

  • 公平,我已从问题中删除了对 3rd 方工具的引用。
  • 我在 VS 选项中看不到任何内容来指定仅格式化前导空格。如果它格式化,它将按照配置格式化所有内容。我看到的唯一选项是自动格式化(即触发格式化而不是显式命令的东西)。

标签: c# visual-studio visual-studio-2017 code-formatting


【解决方案1】:

你可能想看看editorconfig,Visual Studio 有很好的integration。不仅可以格式化,您还可以对一些由 Roslyn 提供支持的特定语言编码样式进行编码。

【讨论】:

    【解决方案2】:

    只需按 Ctrl+E、Ctrl+D 即可进行代码格式化

    【讨论】:

    • -1,似乎还没有真正阅读过这个问题。这违反了我的要求“请特别注意,当范围正确缩进时,一行的初始前导空白之后的任何间距都保持不变。”
    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多