如何控制 Visual Studio 中换行的缩进

How do I control indentation of wrapped lines in Visual Studio

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

问题是换行的缩进是完全不可预测的(至少对我而言)。有时它如我所料缩进了 4 个字符;有时它位于 => 或相同运算符(如 &&)的括号下或右侧。因此,经常换行从字符 80 或 90 开始!

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

不用说,我在 Visual Studio 和 Resharper Code Editing - Formatting 选项下尝试了十几种选项组合。 Visual studio 似乎没有 any 选项可以使它推送新行。 Resharper 在 C# - 格式样式下有括号部分。但没有什么能让包装变得简单

示例:

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(),
    ...
});

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

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(),

我不确定您是否可以完全简化换行 statements/expressions 的缩进,但以下选项应该会更容易。如果有什么仍然让您不快,请用示例修改您的问题。

制表符、缩进、对齐

  • 将 "Parenthesis" 部分中的所有选项设置为 "Parenthesis and inside equally"
  • 关闭 "Align Multiline Constructs"
  • 中的所有选项

支撑布局

  • 将"Expressions (initializers, switch expressions)"设置为"At next line indented (Whitesmiths style)"
  • 还要考虑是否要将 "Lambda and delegate" 也更改为相同的样式

更新:要防止 ReSharper 重新包装您的代码,请转到 "Line breaks and wrapping" 页面并查找名为 "Wrap ..." 且值为 "Chop if long or multiline" 和 "Chop always" 的选项。根据需要将它们更改为 "Simple wrap"。您可能还想确保所有 "Keep existing arrangement..." 选项都已打开。您的特定示例受名为 "Wrap ternary expression".

的设置的影响