Visual Studio 2015 - C#代码片段后的换行行为

3
自从我升级到Visual Studio 2015以来,出现了一个令人烦恼甚至令人沮丧的行为。每当我输入某种代码片段(例如通过输入“if”后跟[Tab][Tab]来输入if块,或者高亮显示某些代码并使用“Surround With…”选项),然后单击该片段的结束括号之后并按[Enter]键时,我期望会发生换行,得到类似于以下内容的结果:
if (true)
{
    // some code
    // some more code
} // (right here, after the closing bracket, is where I clicked, then hit [Enter])
// new empty line

相反,换行不会发生,并且文本焦点移动到代码的最后一行之后的块内部,如下所示:

if (true)
{
    // some code
    // some more code (text focus is now right here)
}

我注意到当出现这种行为时没有任何提示,这让我认为这不是可配置的“智能”功能。是否有其他人也遇到了这个问题?如果是,我该怎么解决?
编辑:User42下面的答案解决了我的问题,但是对于那些遇到同样问题的人,这里有一个视频展示了这个问题的发生。

尝试使用VS2013,但无法复现它。 - TheLethalCoder
尝试使用VS2015,但无法复现。 - Hamid Pourjam
尝试了VS2015和VS2013,没有遇到这个问题。你安装了什么扩展吗? - Derek Van Cuyk
我可以在VS2015中重现。 - Ron Beyer
我无法在2015年复现它...我的光标像预期的那样移到了块外的下一行。 - DrewJordan
我认为如果安装了Resharper,这种情况就不会发生,因为你确实按了两次[Tab]键。 - Andre
1个回答

6

使用VS2015重现。

原因是您仍然在填写if的参数(请注意它已经被突出显示)。只需输入参数并按回车键,让VS知道您已完成。这是一个功能,而不是错误。 :)

另一个选项是编辑代码段。代码段存储在:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC#\Snippets\1033\Visual C#

我建议您先复制代码段再进行编辑。


没问题!谢谢。我要补充一点,即使我修改了片段期望的文本(例如,将片段中的true替换为我的表达式),它仍然会强迫我按下[Enter]键,而不是让我轻松地点击并继续我的工作。无论如何,感谢您提供的解决方案。 - Jacob Stamm
@JacobStamm 我现在没有测试过,但我认为你需要将片段中的 $end$ 移动到 } 之后。 - User42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接