如何在Visual Studio 2015中粘贴时保留格式?

age*_*ost 26 c# visual-studio

我在我的函数的一部分中有一个switch case,我需要重新排序一些案例以便更好地读取代码.

所以现在的代码看起来像这样:

switch(parameter) {
      case "foo" : {DoSomething; DoSomething; DoSomething; DoSomething; break }
      case "bar" : {DoSomething; DoSomething; DoSomething; DoSomething; break }  
      ....
      case "alpha" : {DoSomething; DoSomething; DoSomething; DoSomething; break }
      case "beta" :  {DoSomething; DoSomething; DoSomething; DoSomething; break }
 }
Run Code Online (Sandbox Code Playgroud)

所以我在这个switch语句中有一些案例,我需要重新排序它们中的大多数.并且在重新排序时,例如,如果我想将案例foo和案例栏放在案例alpha和beta之下.一个简单的Ctrl+c,Ctrl+v给我一个像这样的输出:

switch(parameter) {
      case "alpha" : {DoSomething; DoSomething; DoSomething; DoSomething; break }
      case "beta" :  {DoSomething; DoSomething; DoSomething; DoSomething; break }
      ......
      case "foo" : {DoSomething; 
                    DoSomething; 
                    DoSomething; 
                    DoSomething; 
                    break }
      case "bar" : {DoSomething;
                    DoSomething; 
                    DoSomething;
                    DoSomething; 
                    break }  
 }
Run Code Online (Sandbox Code Playgroud)

多次重新排列此文本是一项繁琐的任务.有没有一种方法可以复制一行,因为它在代码的其他部分?

例如,我希望整个文本像以前一样保持在一行中,

  case "foo" : {DoSomething; DoSomething; DoSomething; DoSomething; break }
  case "bar" : {DoSomething; DoSomething; DoSomething; DoSomething; break }  
Run Code Online (Sandbox Code Playgroud)

Cᴏʀ*_*ᴏʀʏ 41

您正在体验Visual Studio的"功能",它可以自动格式化某些操作的代码(已完成的语句;,已完成的块}或打开Paste.幸运的是,这些首选项可以通过以下设置页面进行更改(它们是特定于语言的) :

VS 2015

Tools > Options > Text Editor > C# > Formatting

然后暂时取消选中" 粘贴时自动格式化"选项.

一般C#格式化选项

VS 2017

在Visual Studio 2017中,"格式化"选项在新的"代码样式"菜单下移动,并添加了一些额外的设置:

在此输入图像描述


Leo*_*pez 11

这可能听起来很愚蠢,但粘贴和重新格式化功能在Visual Studio中的工作方式是Visual Studio首先粘贴,然后以不同的步骤格式化文本.

如果您不想禁用"自动粘贴时格式化"功能,请尝试以下操作:

  1. 正常粘贴文本(VS将格式化文本,但挂起)
  2. 多次撤消(Ctrl + Z),直到所有格式化步骤都已恢复