วิธีลบช่องว่างต่อท้ายใน Visual Studio 2008 โดยอัตโนมัติ


122

เป็นไปได้หรือไม่ที่จะกำหนดค่า Visual Studio 2008 ให้ลบอักขระช่องว่างที่ท้ายแต่ละบรรทัดโดยอัตโนมัติเมื่อบันทึกไฟล์ ดูเหมือนจะไม่มีตัวเลือกในตัวดังนั้นมีส่วนขยายใดบ้างที่สามารถทำได้


1
หมายเหตุสำหรับผู้ที่อ่านสิ่งนี้ที่ใช้ Visual Studio 2010: หากคุณติดตั้งส่วนขยาย PowerCommands จาก Microsoft คุณสามารถจัดรูปแบบเอกสารโดยอัตโนมัติเมื่อบันทึกไฟล์ (เปิดคุณลักษณะนี้ผ่านทาง Tools / Options) สิ่งนี้จะช่วยลบพื้นที่สีขาวต่อท้ายที่ไม่จำเป็นออกไป
steinar

คำตอบ:


68

CodeMaid เป็นส่วนขยาย Visual Studio ที่ได้รับความนิยมมากและทำสิ่งนี้โดยอัตโนมัติพร้อมกับการล้างข้อมูลที่มีประโยชน์อื่น ๆ

ฉันตั้งค่าให้ล้างไฟล์ที่บันทึกซึ่งฉันเชื่อว่าเป็นค่าเริ่มต้น


1
นี่คือทางออกที่ดีที่สุดในหน้านี้ สามารถกำหนดค่าได้อย่างง่ายดายทำโดยอัตโนมัติสำหรับคุณตามความต้องการหรือประหยัดมันทำงานร่วมกับ VS ได้ดีมีคุณสมบัติที่มีประโยชน์อื่น ๆ อีกมากมาย หา arserbin3 ดี
Chris R

ไม่มีวิธีปิดการจัดรูปแบบโค้ดทั้งหมดในส่วนขยายนี้ดังนั้นจึงไม่สามารถใช้ร่วมกับรูปแบบการเยื้องที่กำหนดเองได้
aemxdp

@ Andriy ฉันไม่เข้าใจว่าคุณหมายถึงอะไร ตามการเยื้องแบบกำหนดเองที่คุณตั้งไว้ในวิชวลสตูดิโอ ตั้งค่าใน Tools> Options> Text Editor> [Language]> Tabs
arserbin3

@ arserbin3 ฉันหมายความว่าถ้าคุณต้องการจัดรูปแบบโค้ดของคุณเช่นนี้ - pastebin.com/uJqBQ1u2 - คุณโชคไม่ดีเพราะเมื่อบันทึกแล้วจะฟอร์แมตรหัสโดยอัตโนมัติเช่นpastebin.com/761Lzra7หรืออะไรทำนองนั้นขึ้นอยู่กับ ตัวเลือก. และไม่มีตัวเลือกในการปิดกฎการเยื้องอย่างสมบูรณ์ และหากไม่มีการฟอร์แมตไฟล์ codemaid จะไม่ทำงานโดยอัตโนมัติดังนั้นคุณสามารถบันทึกไฟล์ของคุณด้วยการเยื้องประเภทนั้นได้
aemxdp

6
@ arserbin3 ฉันคิดว่าคุณกำลังพลาดประเด็นของ Andriy ฉันกำลังทำงานในโครงการโอเพ่นซอร์สขนาดใหญ่ ฉันไม่ได้เป็นเจ้าของรหัส - ฉันกำลังสนับสนุนรหัสนี้ ฉันไม่สามารถเปลี่ยนแนวทางการเยื้องของโครงการได้ ฉันต้องการให้ VisualStudio ลบช่องว่างต่อท้ายเมื่อฉันแก้ไขไฟล์บางไฟล์และฉันก็ไม่ได้ยุ่งอะไรกับสิ่งอื่นในไฟล์ (แท็บช่องว่างการเยื้อง ฯลฯ ) จนถึงตอนนี้ VisualStudio เป็นIDE เดียวที่ฉันทำงานด้วยซึ่งไม่สามารถทำได้ โปรแกรมแก้ไขครึ่งหน้าอื่น ๆ (นับประสา IDE) สามารถทำได้ ฉันไม่สามารถกำหนดค่า CodeMaid เป็นการจัดรูปแบบบางอย่างได้เนื่องจากการจัดรูปแบบแตกต่างกันไป
kliteyn

71

ค้นหา / แทนที่โดยใช้นิพจน์ทั่วไป

ในการค้นหาและแทนโต้ตอบกล่องขยายค้นหาตัวเลือกการตรวจสอบการใช้งานให้เลือกนิพจน์ปกติ

ค้นหาอะไร : " :Zs#$"

แทนที่ด้วย : ""

คลิกแทนที่ทั้งหมด

ในการแก้ไขอื่น ๆ (เป็นปกตินิพจน์ parser) " :Zs#$" จะ " \s*$"


44
ใน VS2012 ฉันจะใช้:[^\S\r\n]+(?=\r?$)
M. Dudley

4
หากคุณใช้แท็บ[:Zs\t]#$เป็นการปรับเปลี่ยนที่มีประโยชน์
dlanod

จะผูกเข้ากับเหตุการณ์ File On Save ได้อย่างไรจึงจะดำเนินการทุกครั้งที่บันทึกไฟล์ได้ไหม?
David Ferenczy Rogožan

30

คุณสามารถสร้างมาโครที่ดำเนินการหลังจากบันทึกเพื่อทำสิ่งนี้ให้คุณได้

เพิ่มสิ่งต่อไปนี้ลงในโมดูล EnvironmentEvents สำหรับมาโครของคุณ

Private saved As Boolean = False
Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
                                         Handles DocumentEvents.DocumentSaved
    If Not saved Then
        Try
            DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                                 "\t", _
                                 vsFindOptions.vsFindOptionsRegularExpression, _
                                 "  ", _
                                 vsFindTarget.vsFindTargetCurrentDocument, , , _
                                 vsFindResultsLocation.vsFindResultsNone)

            ' Remove all the trailing whitespaces.
            DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                                 ":Zs+$", _
                                 vsFindOptions.vsFindOptionsRegularExpression, _
                                 String.Empty, _
                                 vsFindTarget.vsFindTargetCurrentDocument, , , _
                                 vsFindResultsLocation.vsFindResultsNone)

            saved = True
            document.Save()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Trim White Space exception")
        End Try
    Else
        saved = False
    End If
End Sub

ฉันใช้สิ่งนี้มาระยะหนึ่งแล้วโดยไม่มีปัญหาใด ๆ ฉันไม่ได้สร้างมาโคร แต่แก้ไขจากมาโครใน ace_guidelines.vsmacros ซึ่งสามารถพบได้ด้วยการค้นหาโดย Google อย่างรวดเร็ว


8
โปรดทราบว่าสิ่งนี้จะแทนที่แท็บด้วยช่องว่างสองช่อง
crdx

คุณวางสคริปต์เหตุการณ์เอกสารเหล่านี้ไว้ที่ไหน
xagyg

จะดีกว่าไหมถ้าทำสิ่งนี้ก่อนบันทึกดังนั้นคุณจะไม่ได้รับข้อความแจ้ง VS ที่น่ารำคาญที่ระบุว่า "เฮ้ข้อความมีการเปลี่ยนแปลงตั้งแต่บันทึกครั้งล่าสุดคุณต้องการโหลดซ้ำหรือไม่"
jedmao

2
ไม่มีมาโครอีกต่อไปใน VS 2013 น่าเสียดาย
Nathan Baulch

17

ก่อนที่จะบันทึกคุณอาจจะสามารถที่จะใช้จัดรูปแบบอัตโนมัติทางลัดCTRL+ +KD


11

คุณสามารถทำได้อย่างง่ายดายด้วยการกระทำทั้งสามนี้:

  • Ctrl+ A(เลือกข้อความทั้งหมด)

  • แก้ไข -> ขั้นสูง -> ลบช่องว่างแนวนอน

  • แก้ไข -> ขั้นสูง -> การเลือกรูปแบบ

รอสักครู่แล้วเสร็จ

มันCtrl+ Z'สามารถในกรณีที่สิ่งที่ผิดพลาด


1
มี shorcut สำหรับทำสิ่งนี้: ctrl + w จากนั้นพิมพ์ Edit.RemoveHorizontalWhitespace
Josh

8

โดยใช้องค์ประกอบจากคำตอบทั้งหมดที่ให้ไปแล้วนี่คือรหัสที่ฉันลงท้ายด้วย (ส่วนใหญ่ฉันเขียนโค้ด C ++ แต่ตรวจสอบนามสกุลไฟล์ต่างๆได้ง่ายตามต้องการ)

ขอบคุณทุกคนที่มีส่วนร่วม!

Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
    Handles DocumentEvents.DocumentSaved
    Dim fileName As String
    Dim result As vsFindResult

    Try
        fileName = document.Name.ToLower()

        If fileName.EndsWith(".cs") _
        Or fileName.EndsWith(".cpp") _
        Or fileName.EndsWith(".c") _
        Or fileName.EndsWith(".h") Then
            ' Remove trailing whitespace
            result = DTE.Find.FindReplace( _
                vsFindAction.vsFindActionReplaceAll, _
                "{:b}+$", _
                vsFindOptions.vsFindOptionsRegularExpression, _
                String.Empty, _
                vsFindTarget.vsFindTargetFiles, _
                document.FullName, _
                "", _
                vsFindResultsLocation.vsFindResultsNone)

            If result = vsFindResult.vsFindResultReplaced Then
                ' Triggers DocumentEvents_DocumentSaved event again
                document.Save()
            End If
        End If
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Trim White Space exception")
    End Try
End Sub


2

ฉันใช้VWD 2010 Express ซึ่งไม่รองรับมาโคร ดังนั้นผมจึงเพียงแค่ทำคัดลอก / วางลงในNotepad ++เมนูด้านซ้ายบนEdit> Blank Operations> Trim Trailing Spaceมีการดำเนินงานที่เกี่ยวข้องอื่น ๆ ที่มีมากเกินไป จากนั้นคัดลอก / วางกลับลงใน Visual Studio

นอกจากนี้คุณยังสามารถใช้NetBeansแทน Notepad ++ ซึ่งมี "ลบช่องว่างต่อท้าย" ภายใต้เมนู "แหล่งที่มา"


เพียงแค่ค้นหา / แทนที่: b + $ ด้วยสตริงว่างและคุณสามารถทำได้ใน VS.
ทำให้ถูกต้องตามกฎหมาย

1

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


17
เครื่องมือ diff ที่ดีส่วนใหญ่ไม่สนใจความแตกต่างที่ไม่สำคัญเช่นช่องว่างต่อท้าย หากเครื่องมือของคุณไม่ได้รับ Beyond Compare จากscootersoftware.com
Jim McKeeth

19
หากทุกคนใน บริษัท / โครงการทำเช่นนั้นความแตกต่างก็จะสะอาด คุณจะต้องล้างช่องว่างทั้งหมดเพียงครั้งเดียว จากนั้นคุณจะมีการคอมมิตเพียงครั้งเดียวเท่านั้นที่แก้ไขช่องว่างและไม่มีปัญหาช่องว่างในอนาคต
ThiefMaster

นั่นคือเรื่องจริง แต่การบินนั้นจะขึ้นอยู่กับทีมหรือไม่ การเพิ่มอีกขั้นตอนหนึ่งให้กับงานของทุกคนหรือแม้แต่การตั้งค่าพิเศษเพียงอย่างเดียวเพื่อให้ข้อมูลตรงกันมีแนวโน้มที่จะสร้างแรงเสียดทานโดยไม่จำเป็น หากทีมสามารถเปลี่ยนแปลงได้หรือหากสมาชิกในทีมสามารถเลือก IDE ของตัวเองได้ ฯลฯ ฉันขอแนะนำให้คุณปล่อยให้ช่องว่างเป็น ไม่ใช่เรื่องใหญ่อะไร
Kevin Conner

3
ปัญหาเกี่ยวกับการล้างช่องว่างและการเยื้องคือการลดประสิทธิภาพของคุณสมบัติการควบคุมแหล่งที่มาเช่นคำอธิบายประกอบและนี่เป็นปัญหาที่ Beyond Compare จะไม่สามารถแก้ไขได้ ดีกว่าที่จะทำให้ถูกต้องในครั้งแรก
jammycakes

4
@KevinConner ดูเหมือนว่า IMO จะยากกว่ามากในการรักษาช่องว่างที่ไม่ถูกต้องให้สอดคล้องกันมากกว่าที่จะแก้ไขเพียงครั้งเดียวด้วยช่องว่างขนาดใหญ่ที่กระทำในช่วงเริ่มต้นของโครงการ จากนั้นใครก็ตามที่บรรณาธิการโง่และเสียจะรู้เมื่อตรวจสอบความแตกต่างก่อนที่จะกระทำ
Dan Bechard

1

ฉันคิดว่าเวอร์ชันของJeff Muirอาจได้รับการปรับปรุงเล็กน้อยหากเพียงแค่ตัดแต่งไฟล์ซอร์สโค้ด (ในกรณีของฉันคือ C # แต่สามารถเพิ่มส่วนขยายได้ง่าย) นอกจากนี้ฉันยังเพิ่มการตรวจสอบเพื่อให้แน่ใจว่าหน้าต่างเอกสารสามารถมองเห็นได้เนื่องจากบางสถานการณ์ที่ไม่มีการตรวจสอบนั้นแสดงข้อผิดพลาดแปลก ๆ ให้ฉัน (ตัวอย่างเช่น LINQ เป็นไฟล์ SQL '* .dbml')

Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved
    Dim result As vsFindResult
    Try
        If (document.ActiveWindow Is Nothing) Then
            Return
        End If
        If (document.Name.ToLower().EndsWith(".cs")) Then
            document.Activate()
            result = DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, ":Zs+$", vsFindOptions.vsFindOptionsRegularExpression, String.Empty, vsFindTarget.vsFindTargetCurrentDocument, , , vsFindResultsLocation.vsFindResultsNone)
            If result = vsFindResult.vsFindResultReplaced Then
                document.Save()
            End If
        End If
    Catch ex As Exception
        MsgBox(ex.Message & Chr(13) & "Document: " & document.FullName, MsgBoxStyle.OkOnly, "Trim White Space exception")
    End Try
End Sub


0

ฉันคิดว่าฉันมีมาโครรุ่นนี้ที่จะไม่ขัดข้อง VS2010 บนตัวรีแฟคเตอร์และจะไม่แขวน IDE เมื่อบันทึกไฟล์ที่ไม่ใช่ข้อความ ลองสิ่งนี้:

Private Sub DocumentEvents_DocumentSaved( _
    ByVal document As EnvDTE.Document) _
    Handles DocumentEvents.DocumentSaved
    ' See if we're saving a text file
    Dim textDocument As EnvDTE.TextDocument = _
        TryCast(document.Object(), EnvDTE.TextDocument)

    If textDocument IsNot Nothing Then
        ' Perform search/replace on the text document directly
        ' Convert tabs to spaces
        Dim convertedTabs = textDocument.ReplacePattern("\t", "    ", _
            vsFindOptions.vsFindOptionsRegularExpression)

        ' Remove trailing whitespace from each line
        Dim removedTrailingWS = textDocument.ReplacePattern(":Zs+$", "", _
            vsFindOptions.vsFindOptionsRegularExpression)

        ' Re-save the document if either replace was successful
        ' (NOTE: Should recurse only once; the searches will fail next time)
        If convertedTabs Or removedTrailingWS Then
            document.Save()
        End If
    End If
End Sub

0

ฉันใช้ArtisticStyle (C ++) เพื่อทำสิ่งนี้และฟอร์แมตโค้ดใหม่ด้วย อย่างไรก็ตามฉันต้องเพิ่มสิ่งนี้เป็นเครื่องมือภายนอกและคุณต้องเรียกใช้ด้วยตัวเองดังนั้นคุณอาจไม่ชอบ

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


0

จากคำตอบของ Dyaus และนิพจน์ทั่วไปจากรายงานการเชื่อมต่อนี่คือมาโครที่จัดการบันทึกทั้งหมดไม่แทนที่แท็บด้วยช่องว่างและไม่ต้องการตัวแปรคงที่ ข้อเสียที่เป็นไปได้? ดูเหมือนช้าเล็กน้อยอาจเป็นเพราะมีการโทรเข้าหลายFindReplaceครั้ง

Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
                                         Handles DocumentEvents.DocumentSaved
    Try
        ' Remove all the trailing whitespaces.
        If vsFindResult.vsFindResultReplaced = DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                             "{:b}+$", _
                             vsFindOptions.vsFindOptionsRegularExpression, _
                             String.Empty, _
                             vsFindTarget.vsFindTargetFiles, _
                             document.FullName, , _
                             vsFindResultsLocation.vsFindResultsNone) Then
            document.Save()
        End If
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Trim White Space exception")
    End Try
End Sub

สำหรับใครก็ตามที่พยายามใช้สิ่งนี้ใน Add-in ของ Visual Studio 2012 นิพจน์ทั่วไปที่ฉันใช้คือ[ \t]+(?=\r?$)(อย่าลืมหลีกเลี่ยงเครื่องหมายแบ็กสแลชหากจำเป็น) ฉันมาถึงที่นี่หลังจากความพยายามที่ไร้ประโยชน์หลายครั้งในการแก้ไขปัญหาด้วยการแปลงข้อมูลดิบว่า{:b}+$ไม่ตรงกับการคืนค่าขนส่ง


-1

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

    Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
                                         Handles DocumentEvents.DocumentSaved
    Dim result As vsFindResult
    'Dim nameresult As String

    Try
        document.Activate()

        ' Remove all the trailing whitespaces.
        result = DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                             ":Zs+$", _
                             vsFindOptions.vsFindOptionsRegularExpression, _
                             String.Empty, _
                             vsFindTarget.vsFindTargetCurrentDocument, , , _
                             vsFindResultsLocation.vsFindResultsNone)

        'nameresult = document.Name & " " & Str$(result)

        'MsgBox(nameresult, , "Filename and result")

        If result = vsFindResult.vsFindResultReplaced Then
            'MsgBox("Document Saved", MsgBoxStyle.OkOnly, "Saved Macro")
            document.Save()
        Else
            'MsgBox("Document Not Saved", MsgBoxStyle.OkOnly, "Saved Macro")
        End If

    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Trim White Space exception")
    End Try

End Sub

ฉันเพิ่มกล่องข้อความแก้ไขข้อบกพร่องเพื่อช่วยดูว่าเกิดอะไรขึ้น ทำให้ชัดเจนมากว่าการบันทึกไฟล์หลายไฟล์ไม่ทำงาน หากคุณต้องการเล่นกับพวกเขาให้ยกเลิกการใส่ข้อคิดเห็นเหล่านั้น

ความแตกต่างที่สำคัญคือการใช้ document.Activate () เพื่อบังคับให้เอกสารเป็นเอกสารปัจจุบันที่ใช้งานอยู่เบื้องหน้า หากผลลัพธ์เป็น 4 แสดงว่าข้อความนั้นถูกแทนที่ Zero หมายถึงไม่มีอะไรเกิดขึ้น คุณจะเห็นการบันทึกสองรายการสำหรับทุกไฟล์ ครั้งแรกจะแทนที่และครั้งที่สองจะไม่ทำอะไรเลย อาจมีปัญหาหากบันทึกไม่สามารถเขียนไฟล์ได้ แต่หวังว่าเหตุการณ์นี้จะไม่ถูกเรียกหากเกิดขึ้น

ก่อนสคริปต์ต้นฉบับฉันไม่ทราบว่าสคริปต์ทำงานอย่างไรใน Visual Studio เป็นที่น่าแปลกใจเล็กน้อยที่ใช้ Visual Basic เป็นอินเทอร์เฟซหลัก แต่ก็ใช้งานได้ดีสำหรับสิ่งที่ต้องทำ


การเปลี่ยนแปลงอย่างหนึ่งคือการสนับสนุนการบันทึกและการกู้คืนโฟกัสไปยังหน้าต่างที่มีโฟกัสเมื่อเริ่มการบันทึก เพียงบันทึกเอกสารที่ใช้งานอยู่หลังจากลอง (โดยใช้ currdoc = DTE.ActiveDocument) และก่อนเอกสารเปิดใช้งาน () หลังจากการบันทึกเสร็จสิ้นให้เปิดใช้งานเอกสารต้นฉบับ (currdoc.Activate ()) มันดูตลกเล็กน้อยเมื่อมีการเปลี่ยนโฟกัสไปมาระหว่างการบันทึก แต่จะดีกว่าการเสียโฟกัสไปที่โค้ดที่คุณไม่ได้มอง
Jeff Muir

-1

เพิ่มเติมง่ายๆคือการลบการคืนแคร่ในระหว่างการบันทึก

' Remove all the carriage returns.
result = DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                             "\x000d\x000a", _
                             vsFindOptions.vsFindOptionsRegularExpression, _
                             "\x000a", _
                             vsFindTarget.vsFindTargetCurrentDocument, , , _
                             vsFindResultsLocation.vsFindResultsNone)

กุญแจสำคัญในการทำงานนี้กำลังเปลี่ยน \ x000d \ x000a เป็น \ x000a คำนำหน้า \ x ระบุรูปแบบ Unicode ซึ่งจะทำให้กระบวนการเตรียมไฟล์ต้นฉบับพร้อมสำหรับระบบ Linux โดยอัตโนมัติ

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