Visual studio 如何在VisualStudio中控制包装线的缩进

Visual studio 如何在VisualStudio中控制包装线的缩进,visual-studio,resharper,indentation,visual-studio-2019,Visual Studio,Resharper,Indentation,Visual Studio 2019,我有Visual Studio 2019(家庭社区;办公室专业人员)。我还有ReSharper。我将线路长度设置为120;缩进为4,自动格式化为大括号或分号。语言是C# 问题是,包装线的缩进是完全不可预测的(至少对我来说)。有时它是缩进4个字符,因为我期待;有时它位于括号下或=>或同一运算符的右侧(如&&)。所以,经常换行从字符80或90开始 如何使其始终缩进前一行的4个字符 不用说,我在VisualStudio和Resharper代码编辑-格式化选项下尝试了十几种选项组合。VisualStud

我有Visual Studio 2019(家庭社区;办公室专业人员)。我还有ReSharper。我将线路长度设置为120;缩进为4,自动格式化为大括号或分号。语言是C#

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

如何使其始终缩进前一行的4个字符

不用说,我在VisualStudio和Resharper代码编辑-格式化选项下尝试了十几种选项组合。VisualStudio似乎没有任何选项可以推动它的新产品线。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(),
    ...
});
(这可能不清楚,但行不会经过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(),

我不确定是否可以完全简化包装语句/表达式的缩进,但是下面的选项应该会使它更容易。如果有什么事情仍然让你恼火,请举例修改你的问题

制表符、缩进、对齐

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

  • 将“表达式(初始值设定项、开关表达式)”设置为“下一行缩进(Whitesmiths样式)”
  • 还要考虑是否也要将“Lambda和delegate”更改为相同的样式

更新:为了防止ReSharper重新包装您的代码,请转到“换行和包装”页面,并查找名为“包装…”的选项,其值为“如果长或多行,则进行剪切”和“始终进行剪切”。根据需要将其更改为“简单包裹”。您可能还希望确保所有“保留现有安排…”选项都已启用。您的特定示例受名为“包装三元表达式”的设置影响。

谢谢。我添加了一个示例,其中VS重新格式化,这太糟糕了……事实上,仔细想想,包装行的缩进要好得多。我举了一个我不想包装的例子!事实上,我可以接受这些选择。包装可能是另一个问题。让我把它标记为已接受;但是如果您对包装有一些想法(或者链接到Resharper文档-找不到任何相关内容)-请提前感谢@Felix更新了answerOuch-我完全错过了那个部分!Бааааааааааб:D