首页 > 解决方案 > 如何在 Visual Studio 中控制换行的缩进

问题描述

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

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

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

不用说,我在 Visual Studio 和 Resharper 代码编辑 - 格式选项下尝试了十几种选项组合。Visual Studio 似乎没有任何选项可以推动新产品线。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-studioresharperindentationvisual-studio-2019

解决方案


我不确定您是否可以完全简化包装语句/表达式的缩进,但以下选项应该使它更容易。如果某些事情仍然让您感到恼火,请用示例修改您的问题。

制表符、缩进、对齐

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

支撑布局

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

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


推荐阅读