【问题标题】:How do I control indentation of wrapped lines in Visual Studio如何在 Visual Studio 中控制换行的缩进
【发布时间】:2020-03-19 16:26:15
【问题描述】:

我有 Visual Studio 2019(家里的社区;办公室的专业人士)。我也有 ReSharper。我将行长设置为 120;缩进 4,并在右括号或分号上自动格式化。语言是 C#

问题是换行的缩进是完全不可预测的(至少对我来说)。有时它会像我预期的那样缩进 4 个字符;有时它位于括号下或=> 或同一运算符的右侧(如&&)。所以,经常换行从字符 80 或 90 开始!

我怎样才能使它总是从上一行缩进 4 个字符?

不用说,我在 Visual Studio 和 Resharper 代码编辑 - 格式选项下尝试了十几种选项组合。 Visual Studio 似乎没有 any 选项可以让它推动新产品线。 Resharper 在 C# - Formatting style 下有括号部分。但是没有什么让包装变得简单

例子:

lstGroup.Select(s => new Group
{
    ...
    Status = lookup.Where(w => w.LookupType == LookupConstants.CRIMETYPE &&
        (int?)w.LookupIndex == (string.IsNullOrEmpty(s.TempCrimeType) ? 0
        : Convert.ToInt32(s.TempCrimeType))).Select(w => w.LookupDescription).FirstOrDefault(),
    ...
});

(可能不清楚,但线条不会超过 char;所以我希望它保持这种状态!)。在语句末尾打分号后,变成了

Status = lookup.Where(w => w.LookupType == LookupConstants.CRIMETYPE &&
    (int?) w.LookupIndex == (string.IsNullOrEmpty(s.TempCrimeType)
        ? 0
        : Convert.ToInt32(s.TempCrimeType))).Select(w => w.LookupDescription).FirstOrDefault(),

【问题讨论】:

    标签: visual-studio resharper indentation visual-studio-2019


    【解决方案1】:

    我不确定您是否可以完全简化包装语句/表达式的缩进,但以下选项应该会更容易。如果还有什么让你不快,请用例子修正你的问题。

    制表符、缩进、对齐

    • 将“括号”部分中的所有选项设置为“括号和内部相等”
    • 关闭“对齐多行结构”中的所有选项

    大括号布局

    • 将“表达式(初始化程序、开关表达式)”设置为“在下一行缩进(Whitesmiths 样式)”
    • 还要考虑是否要将“Lambda 和委托”也更改为相同的样式

    更新:为防止 ReSharper 重新包装您的代码,请转到“换行和换行”页面并查找名为“Wrap ...”的选项,其值为“Chop if long or multiline”和“Chop always”。根据需要将它们更改为“简单包装”。您可能还需要确保打开所有“保留现有排列...”选项。您的特定示例受称为“包装三元表达式”的设置的影响。

    【讨论】:

    • 谢谢。我添加了一个示例,其中 VS 重新格式化,这太可怕了......
    • 其实再想一想,换行的缩进好多了。我举了一个例子,我不想包装 根本
    • 实际上,我可以接受这些选项。包装可能是一个不同的问题。让我将其标记为已接受;但如果您对包装有一些想法(或链接到 Resharper 文档 - 找不到任何相关内容) - 提前谢谢您!
    • @Felix 更新答案
    • 哎呀——我完全错过了那个部分! Бальшое спасибо :D
    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 2022-01-08
    • 2016-12-25
    • 2011-02-06
    • 2016-03-14
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多