2016-02-27 61 views
5

我使用C++和C#編寫代碼。在C#中,因爲所有東西都在一個類中,並且(至少通常)在命名空間中,所以我不會縮進這些東西,而是在第1行中啓動函數,聲明等。在VS 2010中,IDE會縮進第一行在其認爲合適的類別聲明中。我會把它移回去,接下來的一切都會與我的偏好一致。縮進與VS 2015中的現有代碼(C#)不匹配

在VS 2015中,無論實際縮進如何,每行都縮進,就好像包含函數按默認縮進一樣。舉例來說,如果我有臺詞:

x = 1; 
z = 3; 

,並添加中間一條線,它會自動格式爲:

x = 1; 
     y = 2; 
z = 3; 

(如果我格式化,刪除和替換整個函數關閉'},'該功能的其餘部分將右移,以便所有內容都與所添加的行匹配。)

我有下沉的感覺,這是一個無法更改的「功能」。 。 。 。

+0

玩弄的選項,我發現這個問題的討論在[https://github.com/dotnet/roslyn/issues/4351]。有跡象表明,至少可能會出現部分修復,但顯然還沒有。 –

回答

1

Tools | Options對話框變化從「智能」,以「塊」的

Text Editor | C# | Tabs | Indenting 

選項

您還需要告訴VS離開線/單獨的代碼塊,當你鍵入一個​​3210或'}'字符。禁用:

Text Editor | C# |Formatting | General | Automatically format statement on ; 
Text Editor | C# |Formatting | General | Automatically format statement on } 

您還可能希望在

Text Editor | C# | Formatting | Indentation 
+0

謝謝。我已經嘗試了「智能」和「阻止」,他們看起來工作相同(和「無」一樣)。我必須關閉所有格式才能停止效果。 –

+0

我看到了 - 我錯過了,您還需要關閉'文本編輯器| C#|格式化|一般|自動格式化語句on;'和'自動格式化語句}'。這是什麼意思,通過關閉所有格式?看起來這就是你想要的行爲 - 我不知道你怎麼都可以讓VS保持單獨的代碼,並且在';'時格式化一行或一行代碼塊。或'}'鍵入。這兩個願望是不一致的。 –

+0

我不希望VS單獨離開代碼。例如,當我在一個塊的中間插入語句時,我想讓VS格式化該語句(當我輸入';'時) - 但是我希望格式化後添加的語句具有與該塊中的其他語句(如VS 2010中發生的)。但似乎我唯一的選擇是關閉格式或獲取不正確的格式。 –