Visual Studio ต่อการตั้งค่าการเยื้องโซลูชัน


89

ฉันกำลังทำงานกับสองสิ่งที่แตกต่างกันและแท็บการใช้งานบางอันใช้ช่องว่าง 2 ช่องสำหรับการเยื้องผู้ใช้อีก 4 ช่องสำหรับการเยื้อง

ตัวเลือกในการตั้งค่านี้ใน Visual Studio อยู่ใน Tools-> Options-> Text Editor-> <language> -> Tabs

มีวิธีใดบ้างในการแทนที่การตั้งค่าเหล่านี้ในแต่ละฐานโซลูชันหรือไม่?


15
ฉันหวังว่ามันจะตรวจจับรูปแบบแท็บ / การเยื้องตามไฟล์ได้ กล่าวคือเมื่อเปิดไฟล์มันจะใช้สไตล์แท็บ / การเยื้องสำหรับไฟล์นั้น Sublime Text ทำมัน
IsmailS

คำตอบ:


20

นี่คือวิธีหนึ่ง (เป็นที่ยอมรับว่าแฮ็ก) เพื่อบรรลุสิ่งที่คุณกำลังมองหา:

1) สร้างมาโครที่เปลี่ยนการเยื้อง (ที่มา )

 Sub Set-Indent(indent As integer)
     Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
     Dim ts As EnvDTE.Property = props.Item("TabSize")
     Dim ins As EnvDTE.Property = props.Item("IndentSize")
     ts.Value = indent 
     ins.Value = indent 
 End Sub

2) เชื่อมโยงกับการโหลดโซลูชันของคุณ: ในตัวสำรวจมาโครให้เลือก EnvironmentEventsเลือกSolutionEventsในเมนูแบบเลื่อนลงรายการแรกOpenedในรายการที่สอง ตอนนี้คุณมีมาโครที่จะทริกเกอร์ทุกครั้งที่คุณเปิดโซลูชัน คุณเพียงแค่ต้องแมปโซลูชันของคุณกับการเยื้องที่ต้องการ


8
แฮ็คใช่ แต่ได้ผล ขอบคุณ. สำหรับ C # devs คือ DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale

2
หากคุณใส่สิ่งนี้ไว้ในโซลูชันเดียวคุณจะต้องใส่ไว้ในโซลูชันทั้งหมด แทบจะไม่สามารถใช้งานได้โดยเฉพาะสำหรับโครงการสาธารณะ EditorConfig (คำตอบถัดไปด้านล่าง) คือ IMHO ที่ดีกว่า
rustyx

93

อัปเดต: VS 2017 รองรับ EditorConfig ดั้งเดิม: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

ใน VS 2010 ขึ้นไปมีส่วนขยายที่ตั้งค่าการเยื้องตามไฟล์. editorconfigในรูทโซลูชัน / โปรเจ็กต์:

http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328

นอกจากนี้ยังมีที่คล้ายกันส่วนขยายสำหรับ Visual Studio รหัส


2
ฉันชอบสิ่งนี้ - ตั้งค่าได้อย่างรวดเร็วไม่มีปัญหาการทำงานช้าลงเหมือนกับตัวเลือกอื่น ๆ และมีโบนัสเพิ่มเติมที่คุณสามารถเปลี่ยนการตั้งค่าในแต่ละโครงการได้ในโซลูชันหากคุณต้องการ ถึง.
karaken12

@ondatra ฉันไม่สามารถใช้งานได้เมื่อวางไฟล์ในโฟลเดอร์ Solution (พร้อมกับ.slnไฟล์) เฉพาะในแต่ละโฟลเดอร์โครงการ นอกจากนี้ยังรองรับindent_brace_style?
drzaus

@ondatra เพิ่งค้นพบว่ามันไม่สนับสนุนindent_brace_styleเลย - ฉันได้เปิดปัญหาสำหรับมัน
drzaus

ขอขอบคุณ. โปรดทราบว่าฉันต้องใช้การอัปเดต 0.4.0 จากgithub.com/editorconfig/editorconfig/issues/116สำหรับ vs2012update3
SteelBytes

1
VS2017 v15.3 สนับสนุนในขณะนี้จำนวนมากของคุณสมบัติของสไตล์การเข้ารหัส
Frédéric

7

นอกจากนี้ยังมี Add-in อีกตัวที่เรียกว่า "Rebracer" ... ลิงก์อยู่ที่นี่: http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58


ส่วนขยาย Rebracer ทำงานได้ดีมาก เนื่องจากผสานรวมและปรับเปลี่ยนการตั้งค่าในตัวของ Visual Studio จึงบรรลุวัตถุประสงค์โดยไม่ต้องใช้ทรัพยากรมาก
Alex Essilfie

4

จากเว็บไซต์ EditorConfig ส่วนขยาย VS ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

โครงการ EditorConfig กำหนดรูปแบบไฟล์ที่เรียบง่ายสำหรับการกำหนดค่าตัวเลือกการแก้ไขข้อความที่พบบ่อยเช่นขนาดเยื้อง ไฟล์คอนฟิกูเรชันเหล่านี้ได้รับการออกแบบมาให้วางควบคู่ไปกับซอร์สโค้ดของโปรเจ็กต์ทำให้ผู้แก้ไขข้อความสามารถใช้ตัวเลือกที่เหมาะสมทีละไฟล์ โครงการ EditorConfig มีปลั๊กอินสำหรับโปรแกรมแก้ไขข้อความทั่วไปจำนวนมากทำให้รูปแบบข้ามแพลตฟอร์มอย่างสมบูรณ์

(เน้นเหมือง)

การเปิดเผยข้อมูลทั้งหมด: ฉันไม่สามารถทดสอบเป็นการส่วนตัวได้ (เพราะ ReSharper เข้ามาแทนที่)


2

VS2017 RC เพิ่มการรองรับรูปแบบ. editorconfig


5
ใช่ แต่ตัวอย่างของไฟล์ที่เสร็จแล้วจะดีมาก :)
Toddmo


0

อัปเดต:ดูเหมือนว่า Resharper ไม่ได้จัดการการเยื้องดังนั้นคำตอบนี้ไม่ได้ตอบคำถามเฉพาะ อย่างไรก็ตามมันมีผลบังคับใช้ในเงื่อนไขทั่วไป เช่น"Visual Studio ต่อการตั้งค่าโซลูชัน"ในกรณีที่มีใครสะดุดมองหาสิ่งนั้น


หากคุณกำลังใช้ Resharperคุณสามารถบันทึกการตั้งค่าการจัดรูปแบบ (จริงๆคือการตั้งค่าใด ๆ ) สำหรับวิธีแก้ปัญหาเท่านั้น คุณสามารถระบุเพิ่มเติมได้ว่าสำหรับคุณเท่านั้น (กล่าวคือไม่มุ่งมั่นที่จะควบคุมแหล่งที่มา) หรือการตั้งค่าเฉพาะโซลูชันที่ใช้ร่วมกัน (เช่นกระทำต่อการควบคุมแหล่งที่มา)

Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout

จากนั้นที่ด้านล่างของหน้าต่างภายใต้Save Toเลือก "โซลูชัน XYZ ส่วนบุคคล" (หรือแชร์ขึ้นอยู่กับวัตถุประสงค์ของคุณ)

สิ่งนี้สร้างไฟล์ xml ที่YOURSOLUTION.sln.DotSettings.userมีค่าเช่น:

<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>

การตั้งค่า Resharper - บันทึกสำหรับโซลูชันเท่านั้น


1
การตั้งค่า resharper ใดที่ใช้ในการตั้งค่าการเยื้องเป็น 2 ช่องว่างหรือ 4 ช่องว่าง
Endy Tjahjono

@EndyTjahjono เป็นการตั้งค่า VS: Tools> Options> Text Editor> (Language)> Tabs> "Tab Size" หรือ "Indent Size" และสิ่งที่ดีเกี่ยวกับ VS2012 คือคุณสามารถใช้การค้นหาเปิดใช้ด่วน ( CTRL+Q) และพิมพ์ "แท็บ" เพื่อข้ามไปยังการตั้งค่าภาษาที่มีอยู่ทั้งหมด
drzaus

แต่การตั้งค่า VS นั้นเป็นแบบโกลบอล (ไม่ใช่สำหรับโซลูชัน / โปรเจ็กต์) และคุณแนะนำให้ใช้ resharper เนื่องจากมีการตั้งค่าตามโซลูชัน / โปรเจ็กต์
Endy Tjahjono

คุณมีฉัน - ฉันอยู่ระหว่างเปลี่ยนการตั้งค่าอื่น ๆ ใน resharper ดังนั้นฉันคิดว่ามันจะจัดการการเยื้องด้วย ฉันเพิ่งตรวจสอบ resharper อีกครั้งสำหรับการตั้งค่าแท็บ แต่ไม่พบ ดังนั้นข้อแม้คือ "สำหรับการตั้งค่าใด ๆ ยกเว้นการตั้งค่าที่ resharper ไม่สามารถจัดการได้เช่นขนาดการเยื้อง" ฉันจะอัปเดตคำตอบอย่าลังเลที่จะลงคะแนนเนื่องจากฉันไม่ได้ให้ความสนใจมากพอ
drzaus

ขอบคุณสำหรับการอัพเดท. ฉันไม่ได้พยายามแก้ไขคุณ แต่จริงๆแล้วหวังว่าจะมี resharper ต่อการตั้งค่าการเยื้องโครงการและฉันไม่พบสถานที่ที่จะตั้งค่า
Endy Tjahjono

0

ดังนั้นโซลูชันที่ยอมรับจึงระบุว่า "คุณเพียงแค่ต้องแมปโซลูชันของคุณกับการเยื้องที่ต้องการ" ซึ่งดีมากยกเว้นคุณจะทำอย่างไร หลังจากที่เสียเวลามากพยายามที่จะคิดออกว่าผมพบว่าวิธีการที่ฉันชอบที่นี่ วิธีนี้จะโหลดการตั้งค่าที่ส่งออกจำนวนเท่าใดก็ได้ซึ่งอาจแตกต่างกันไปสำหรับทุกโซลูชัน การตั้งค่าสามารถรวมอะไรก็ได้ตั้งแต่การเยื้องไปจนถึงสีหรือแม้แต่เค้าโครงหน้าต่าง (ฉันคิดว่า)

  • ใน Visual Studio 2008 ให้เปิด Tools> Macros> Macro explorer
  • ดับเบิลคลิก MyMacros> Module1 (หากคุณไม่มี Module1 ให้คลิกขวาที่ MyMacros แล้วเลือก 'New module ... ' เพื่อสร้าง)
  • ในหน้าต่าง macro explorer ให้ดับเบิลคลิกที่ 'EnvironmentEvents' ทางด้านซ้าย
  • ในเมนูแบบเลื่อนลงด้านซ้ายบนให้เลือก 'SolutionEvents'
  • ในเมนูแบบเลื่อนลงด้านขวาบนให้เลือก "เปิดแล้ว"
  • รหัสเพื่อจัดการกับ SolutionEvents เหตุการณ์ที่เปิดจะถูกเพิ่มโดยอัตโนมัติ เปลี่ยนรหัสนั้นเป็นดังต่อไปนี้:

    Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
        Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
        If Not item Is Nothing Then
            'MsgBox("Uncomment this to see a message when settings are loaded")
            Dim name = item.FileNames(1)
            DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
        End If
    End Sub
    
  • บันทึกมาโคร

  • ใช้เครื่องมือ> ตัวเลือกเพื่อเปลี่ยน UI ของคุณเพื่อให้มีการตั้งค่าแท็บและสิ่งอื่น ๆ ที่คุณต้องการตั้งค่า
  • เครื่องมือ> นำเข้าและส่งออกการตั้งค่า ... > ส่งออกการตั้งค่าสภาพแวดล้อมที่เลือก> ถัดไป
  • หากต้องการส่งออกการตั้งค่าแท็บให้ยกเลิกการเลือก "การตั้งค่าทั้งหมด" จากนั้นเลือกตัวเลือก> แก้ไขข้อความ> C / C ++
  • คลิก Next จากนั้นพิมพ์ 'solution.vssettings' เป็น 'What do you want to name your settings file?' และบันทึกไฟล์ไปที่ใดก็ได้ที่คุณมีโซลูชันที่คุณต้องการใช้การตั้งค่าเหล่านั้น
  • ลาก solution.vssettings ไปยังตำแหน่งใด ๆ ในหน้าต่าง Solution Explorer
  • ออกจาก Visual Studio และในครั้งต่อไปที่คุณเปิดโซลูชันที่มี solution.vssettings ก็ควรโหลดการตั้งค่าเหล่านั้น

หากแมโครไม่ทำงานอาจเป็นเพราะโปรแกรมแก้ไขความปลอดภัย MS จากนี้ให้เพิ่มสตริงต่อไปนี้:

<AllowDComReflection enabled="true"/>

ด้านล่างแท็ก <runtime> ในไฟล์สามไฟล์ต่อไปนี้:

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"

อย่าลืมเริ่มโปรแกรมแก้ไขที่คุณใช้เพื่อแก้ไขไฟล์เหล่านั้นด้วยสิทธิ์ของผู้ดูแลระบบ (เช่นคลิกขวาที่ Notepad แล้วเลือก 'Run as Administrator')

ฉันยังพบปลั๊กอินที่ควรจะทำสิ่งเดียวกันกับมาโครที่แนะนำข้างต้น แต่ด้วยเหตุผลบางอย่างมันไม่ได้ทำอะไรเลยหลังจากที่ฉันรันโปรแกรมติดตั้ง


0

clang-format มีตัวเลือกที่ค่อนข้างซับซ้อนสำหรับการจัดรูปแบบซอร์สโค้ดของคุณ

ปลั๊กอิน Visual Studio ค่อนข้างเป็นพื้นฐานกล่าวคือไม่ได้ทำงานโดยอัตโนมัติ แต่ทำงานได้ดี (เมื่อเรียกใช้ด้วยตนเองนั่นคือ)

http://llvm.org/builds/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.