ভিজ্যুয়াল স্টুডিও ২০০৮-এ কীভাবে স্বয়ংক্রিয়ভাবে পেছনের সাদা স্থান সরিয়ে ফেলবেন?


122

কোনও ফাইল সংরক্ষণের সময় প্রতিটি লাইনের শেষে স্বয়ংক্রিয়ভাবে শ্বেতক্ষেত্রের অক্ষরগুলি সরাতে ভিজ্যুয়াল স্টুডিও ২০০৮ কনফিগার করা সম্ভব? কোনও অন্তর্নির্মিত বিকল্প বলে মনে হচ্ছে না, তাই এটি করার জন্য কি কোনও এক্সটেনশন উপলব্ধ?


1
ভিজুয়াল স্টুডিও 2010 ব্যবহার করে যাঁরা এটি পড়ছেন তাদের জন্য দ্রষ্টব্য: আপনি যদি মাইক্রোসফ্ট থেকে পাওয়ারকম্যান্ডস এক্সটেনশনটি ইনস্টল করেন তবে ফাইলটি সংরক্ষণ করার সময় আপনি নথিটি স্বয়ংক্রিয়ভাবে ফর্ম্যাট করতে পারেন (সরঞ্জাম / বিকল্পগুলির মাধ্যমে এই বৈশিষ্ট্যটি চালু করুন)। এটি অন্যান্য জিনিসের মধ্যে অপ্রয়োজনীয় পেছনের সাদা স্থান সরিয়ে ফেলবে।
স্টেইনার

উত্তর:


68

কোডমেইড একটি খুব জনপ্রিয় ভিজ্যুয়াল স্টুডিও এক্সটেনশন এবং এটি অন্যান্য দরকারী ক্লিনআপগুলির সাথে স্বয়ংক্রিয়ভাবে এটি করে।

আমি সেভ করে একটি ফাইল সাফ করার জন্য সেট করেছি, এটি আমার বিশ্বাস ডিফল্ট।


1
এটি এই পৃষ্ঠার সেরা সমাধান। এটি সহজেই কনফিগারযোগ্য, স্বয়ংক্রিয়ভাবে আপনার জন্য চাহিদা বা সংরক্ষণের জন্য সম্পন্ন হয়, এটি ভিএসের সাথে দুর্দান্তভাবে সংহত করে, এতে প্রচুর অন্যান্য খুব দরকারী বৈশিষ্ট্য রয়েছে। আর্সারবিন 3 ভাল লাগবে।
ক্রিস আর

এই এক্সটেনশনে পূর্ণ কোড বিন্যাস বন্ধ করার কোনও উপায় নেই, সুতরাং এটি কাস্টম ইনডেন্টেশন শৈলীর সাথে সঙ্গতিপূর্ণ নয়।
এএমএক্সডিপি

@ অ্যান্ড্রি আপনি কী বলতে চাইছেন তা আমি বুঝতে পারি না। এটি ভিজ্যুয়াল স্টুডিওতে যা কিছু কাস্টম ইন্ডেন্টেশন সেট করে তা অনুসরণ করে। এগুলি সরঞ্জামসমূহ> বিকল্পসমূহ> পাঠ্য সম্পাদক> [ভাষা]> ট্যাবগুলিতে
সেট

@ arserbin3 আমি বলতে চাচ্ছি, যে আপনি যদি মত এই আপনার কোড ফরম্যাট করতে চান - pastebin.com/uJqBQ1u2 - আপনার ভাগ্য ফুরিয়েছে, কারণ সংরক্ষণ এটা হবে স্বয়ংক্রিয়ভাবে মত কোড পুনরায় ফরম্যাট উপর pastebin.com/761Lzra7 বা ওই জাতীয় কিছু, তার উপর নির্ভর করে অপশন। এবং ইন্ডেন্টেশন নিয়ম পুরোপুরি বন্ধ করার কোনও বিকল্প নেই। এবং কোডমেড ছাড়াই ফাইল পুনরায় ফর্ম্যাটিং স্বয়ংক্রিয়ভাবে চলবে না, যাতে আপনি আপনার ফাইলটি সেই ধরণের ইনডেন্টেশন দিয়ে সংরক্ষণ করতে পারেন।
এএএমএক্সডিপি

6
@ আারসার্বিন 3 আমি মনে করি আপনি অ্যান্ডির পয়েন্টটি মিস করছেন। আমি একটি বিশাল ওপেন সোর্স প্রকল্পে কাজ করছি। আমি কোডটির মালিক নই - আমি কোডটিতে অবদান রাখছি। আমি প্রকল্পের ইন্ডেন্টেশন নির্দেশিকা পরিবর্তন করতে পারি না। আমি চাই যে ভিজুয়ালস্টুডিও কোনও ফাইল সংশোধন করার পরে ট্রেলিং হোয়াইটস্পেসগুলি সরিয়ে ফেলুক এবং আমি ফাইলের (ট্যাবস, স্পেস, ইন্ডেন্টেশন ইত্যাদি) কোনও কিছুর সাথে গোলমাল করব না। এখনও অবধি, ভিজুয়ালস্টুডিও একমাত্র আইডিই যা আমি এটির সাথে কাজ করেছিলাম তা করতে পারে না। অন্য যে কোনও হাফ-বেকড সম্পাদক (আইডিই একা থাকুক) এটি করতে পারে। আমি কিছু ফর্ম্যাটিংয়ে কোডমেইড কনফিগার করতে পারি না, কারণ ফর্ম্যাটিং পরিবর্তিত হয়।
ক্লাইটাইন

71

নিয়মিত এক্সপ্রেশন ব্যবহার করে সন্ধান করুন / প্রতিস্থাপন করুন

অনুসন্ধান এবং প্রতিস্থাপন কথোপকথনে, অনুসন্ধান বিকল্পগুলি প্রসারিত করুন , ব্যবহার পরীক্ষা করুন , নিয়মিত এক্সপ্রেশন চয়ন করুন

কি সন্ধান করুন : " :Zs#$"

এর সাথে প্রতিস্থাপন করুন : ""

সমস্ত প্রতিস্থাপন ক্লিক করুন

অন্যান্য সম্পাদকগুলিতে (একটি সাধারণ নিয়মিত এক্সপ্রেশন পার্সার) " :Zs#$" "হবে \s*$"।


44
ভিএস ২০১২ তে আমি ব্যবহার করব:[^\S\r\n]+(?=\r?$)
এম ডুডলি

4
আপনি যদি ট্যাবগুলি ব্যবহার করেন তবে [:Zs\t]#$এটি একটি দরকারী অভিযোজন।
dlanod

কীভাবে এটি ফাইল অন সেভ ইভেন্টে আবদ্ধ করবেন যাতে প্রতিবার যখনই আমি কোনও ফাইল সংরক্ষণ করি তখন তা কার্যকর হয়?
ডেভিড ফেরেঞ্জি রোগোয়ান

30

আপনার জন্য এটি করার জন্য আপনি একটি ম্যাক্রো তৈরি করতে পারেন যা সেভ করার পরে কার্যকর করে।

আপনার ম্যাক্রোগুলির জন্য পরিবেশগত ইভেন্ট মডিউলটিতে নিম্নলিখিতটি যুক্ত করুন।

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_guidlines.vsmacros এর থেকে পরিবর্তন করেছিলাম যা দ্রুত গুগল অনুসন্ধানের সাথে পাওয়া যায়।


8
নোট করুন যে এটি দুটি স্পেসের সাথে ট্যাবগুলিও প্রতিস্থাপন করে।
সিআরডিএক্স

আপনি এই দস্তাবেজ ইভেন্ট স্ক্রিপ্ট কোথায় রাখবেন?
xagyg

কোনও সংরক্ষণের আগে এটি করা ভাল না, তাই আপনি বিরক্তিকর ভিএস প্রম্পটটি পাবেন না যাতে বলা হয়, "আরে, পাঠানো শেষ সংরক্ষণের পরে পরিবর্তিত হয়েছে। আপনি কি পুনরায় লোড করতে চান?"
jedmao

2
দুর্ভাগ্যক্রমে VS 2013 তে আর কোনও ম্যাক্রো নেই।
নাথান বাউলচ

17

সংরক্ষণের আগে আপনি অটো-ফর্ম্যাট শর্টকাট CTRL+ K+ ব্যবহার করতে সক্ষম হতে পারেন D


11

আপনি এই তিনটি ক্রিয়া সহ সহজেই এটি করতে পারেন:

  • Ctrl+ A(সমস্ত পাঠ্য নির্বাচন করুন)

  • সম্পাদনা করুন -> উন্নত -> অনুভূমিক সাদা স্থান মুছুন

  • সম্পাদনা করুন -> উন্নত -> ফর্ম্যাট নির্বাচন

কয়েক সেকেন্ড অপেক্ষা করুন এবং সম্পন্ন করুন।

এটা তোলে এর Ctrl+ + Z'কেস কিছু সক্ষম ভুল হয়েছে।


1
এটি করার জন্য একটি শর্টকাট রয়েছে: সিটিআরটি + ডাব্লু, তারপরে একটি সম্পাদনা টাইপ করুন R সরানহরিজন্টওয়ালাইটস্পেস
জোশ

8

ইতিমধ্যে প্রদত্ত সমস্ত উত্তর থেকে উপাদান গ্রহণ করা, আমি এখানে কোডটি দিয়ে শেষ করেছি। (আমি মূলত সি ++ কোড লিখি তবে প্রয়োজন অনুসারে বিভিন্ন ফাইল এক্সটেনশনের জন্য এটি পরীক্ষা করা সহজ))

যারা অবদান রেখেছেন তাদের সবাইকে ধন্যবাদ!

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

দুর্ভাগ্যক্রমে আমি ভিডাব্লুডি 2010 এক্সপ্রেস ব্যবহার করছি যেখানে ম্যাক্রো সমর্থিত নয়। সুতরাং আমি কেবল নোটপ্যাড ++ শীর্ষ বাম মেনুতে Edit> অনুলিপি / পেস্ট করি Blank Operations> Trim Trailing Spaceঅন্যান্য অন্যান্য সম্পর্কিত ক্রিয়াকলাপগুলি উপলব্ধ। তারপরে ভিজ্যুয়াল স্টুডিওতে কপি / পেস্ট করুন।

কেউ নোটপ্যাড ++ এর পরিবর্তে নেটবিয়ান ব্যবহার করতে পারেন , যার "উত্স" মেনুতে "ট্রেলারিং স্পেসস সরান" রয়েছে।


খালি স্ট্রিং সহ কেবল সন্ধান / প্রতিস্থাপন করুন: বি + and এবং আপনি এটি ভিএস এর এক্সপ্রেস সংস্করণে করতে পারেন।
বৈধতা দিন

1

যদি না এটি এক ব্যক্তির প্রকল্প হয় তবে এটি করবেন না। আপনার উত্স কোডের সংগ্রহস্থলের তুলনায় আপনার স্থানীয় ফাইলগুলিকে পৃথক করার জন্য এটি তুচ্ছ হয়ে উঠবে এবং সাদা স্থান স্পষ্ট করা আপনার লাইন পরিবর্তন করতে হবে না। আমি সম্পূর্ণ বুঝতে পারি; আমি আমার সাদা স্থানটিকে সমস্ত ইউনিফর্ম পেতে ভালবাসি - তবে এটি ক্লিনার সহযোগিতার জন্য আপনার ছেড়ে দেওয়া উচিত।


17
বেশিরভাগ ভাল ডিফ সরঞ্জামগুলি সাদা স্থান অনুসরণ করার মতো গুরুত্বহীন পার্থক্য উপেক্ষা করে। আপনার সরঞ্জামের তারপর বাইরে থেকে তুলনা না করে তাহলে পেতে scootersoftware.com
জিম McKeeth

19
সংস্থায় / প্রকল্পের প্রত্যেকে যদি এটি করে তবে ডিফএস পরিষ্কার হবে। আপনাকে কেবল একবার সমস্ত সাদা জায়গা পরিষ্কার করতে হবে। তারপরে আপনার একক প্রতিশ্রুতি রয়েছে কেবলমাত্র হোয়াইটস্পেস ফিক্সিং এবং ভবিষ্যতে কোনও শ্বেত স্পেস সমস্যা নেই।
চোরমাস্টার

সেটা সত্য. তবে সেটা উড়ে কি দলের উপর নির্ভর করবে। প্রত্যেকের কাজের ক্ষেত্রে আরও একটি পদক্ষেপ যুক্ত করা, বা সিঙ্কে রাখতে একটি অতিরিক্ত সেটিংসও অপ্রয়োজনীয় ঘর্ষণ সৃষ্টি করে। যদি টিমটি পরিবর্তন করতে পারে, বা যদি টিম সদস্যরা তাদের নিজস্ব আইডিই ইত্যাদি গ্রহণ করতে পারে তবে আমি আপনাকে পরামর্শ দিচ্ছি যে কেবল সাদা জায়গাটি দেওয়া হোক। এটি কোনও চুক্তির চেয়ে বড় কিছু নয়।
কেভিন কনার

3
হোয়াইটস্পেস এবং ইন্ডেন্টেশন ক্লিনআপের সমস্যাটি হ'ল এটি এনোটেটের মতো উত্স নিয়ন্ত্রণ বৈশিষ্ট্যগুলির কার্যকারিতা হ্রাস করে এবং এটি এমন একটি সমস্যা যা তুলনার বাইরেও সমাধান করবে না। প্রথমবার এটি পাওয়া ভাল।
জ্যামাইকাইক

4
@ কেভিনকনার প্রকল্পের শুরুতে কোনও দৈত্য হোয়াইটস্পেস কমিট দিয়ে একবার ঠিক করার চেয়ে ভুল শ্বেত স্পেসকে সামঞ্জস্য রেখে আইএমওকে অনেক বেশি কঠিন বলে মনে হচ্ছে । তারপরে, যার সম্পাদক বোকা এবং ভাঙ্গা তারা প্রতিজ্ঞাবদ্ধ হওয়ার আগে তাদের ভিন্নতাগুলি পরীক্ষা করার সময় এটি জানতে পারবে।
ড্যান বেচার্ড

1

আমি মনে করি যে জেফ মুইর সংস্করণটি কেবলমাত্র কোড কোড ফাইলগুলিকে ছাঁটাই করলে (আমার ক্ষেত্রে সি #, তবে আরও এক্সটেনশন যুক্ত করা সহজ) হলে কিছুটা উন্নতি হতে পারে। এছাড়াও নথির উইন্ডোটি দৃশ্যমান তা নিশ্চিত করার জন্য আমি একটি চেক যুক্ত করেছি কারণ চেক ব্যতীত কিছু পরিস্থিতি আমাকে অদ্ভুত ত্রুটি দেখায় (উদাহরণস্বরূপ, লিংক থেকে এসকিউএল ফাইল '* .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 ক্রাশ করবে না এবং অ-পাঠ্য ফাইলগুলি সংরক্ষণ করার সময় আইডিই হ্যাং করবে না। এটা চেষ্টা কর:

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

আমি এটি করতে আর্টিকস্টাইল স্টাইল (সি ++) ব্যবহার করি এবং আমার কোডটি পুনরায় ফর্ম্যাট করি। যাইহোক, আমাকে এটি একটি বাহ্যিক সরঞ্জাম হিসাবে যুক্ত করতে হয়েছিল এবং আপনাকে এটি নিজেরাই ট্রিগার করতে হবে যাতে আপনি এটি পছন্দ না করেন।

যাইহোক, আমি এটি দেখতে পেয়েছি যে আমি কোডটি আরও কাস্টম পদ্ধতিতে পুনরায় ফর্ম্যাট করতে পারি (উদাহরণস্বরূপ, মাল্টলাইন ফাংশন পরামিতি) যা আমি নিজে নিজে চালনার মূল্য দিতে পারি। সরঞ্জামটি বিনামূল্যে is


0

ডায়াসের জবাব এবং একটি সংযুক্ত প্রতিবেদনের নিয়মিত প্রকাশের ভিত্তিতে তৈরি করা , এখানে এমন একটি ম্যাক্রো রয়েছে যা সমস্ত সংরক্ষণ করে, ট্যাবগুলিকে স্থানগুলির সাথে প্রতিস্থাপন করে না এবং স্থির পরিবর্তনশীলের প্রয়োজন হয় না। এটা কি সম্ভব? এটি কিছুটা ধীর বলে মনে হচ্ছে, সম্ভবত একাধিক কল করার কারণে 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

অন্য যে কোনও ভিজ্যুয়াল স্টুডিও 2012 অ্যাড-ইনটিতে এটি ব্যবহার করার চেষ্টা করছে তাদের জন্য, আমি যে নিয়মিত এক্সপ্রেশনটি ব্যবহার করে শেষ করেছি [ \t]+(?=\r?$)তা হ'ল (প্রয়োজনে ব্যাকস্ক্ল্যাশগুলি এড়াতে ভুলবেন না)। আমি এখানে বেশ কিছু বৃথা প্রচেষ্টা একটি সমস্যা সমাধানের জন্য পরে আগত কাঁচা রূপান্তর এর {:b}+$গাড়ি ফেরত মেলে ব্যর্থ।


-1

এটি পেছনের সাদা স্থানটি কীভাবে সরিয়ে ফেলতে হয় তার একটি দুর্দান্ত উদাহরণ। এই ম্যাক্রোটি ব্যবহার করে যা আবিষ্কার করেছি তার উপর ভিত্তি করে কয়েকটি জিনিস আমি পরিবর্তন করব। প্রথমত, ম্যাক্রো স্বয়ংক্রিয়ভাবে ট্যাবগুলিকে স্পেসে রূপান্তর করে। এটি সর্বদা কাম্য নয় এবং ট্যাবগুলি পছন্দ করে এমন লোকদের (সাধারণত লিনাক্স-ভিত্তিক) জিনিসগুলিকে আরও খারাপ করে তুলতে পারে। ট্যাব সমস্যাটি যেভাবেই হোক অতিরিক্ত শ্বেতস্পেস সমস্যার মতো নয়। দ্বিতীয়ত, ম্যাক্রো ধরে নেয় কেবল একবারে একটি ফাইল সংরক্ষণ করা হচ্ছে। আপনি যদি একসাথে একাধিক ফাইল সংরক্ষণ করেন তবে এটি সঠিকভাবে সাদা স্থান সরিয়ে ফেলবে না। কারণটি সহজ। বর্তমান দস্তাবেজটি আপনি দেখতে পারেন এমন নথি হিসাবে বিবেচনা করা হয়। তৃতীয়ত, ফলাফলগুলি অনুসন্ধানের ক্ষেত্রে এটি কোনও ত্রুটি করে না। এই ফলাফলগুলি পরবর্তী কী করা উচিত সে সম্পর্কে আরও ভাল বুদ্ধি দিতে পারে। উদাহরণস্বরূপ, যদি কোনও সাদা জায়গা খুঁজে পাওয়া যায় না এবং প্রতিস্থাপন করা হয়, ফাইলটি আবার সংরক্ষণ করার দরকার নেই। সাধারণভাবে, আমি সংরক্ষণ করতে বা না রাখার জন্য বিশ্ব পতাকাটির প্রয়োজনীয়তা পছন্দ করি না। এটি অজানা রাষ্ট্রগুলির ভিত্তিতে সমস্যা জিজ্ঞাসা করে। আমি সন্দেহ করি পতাকাটি কেবলমাত্র একটি অসীম লুপ প্রতিরোধের জন্য যুক্ত করা হয়েছিল।

    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আপনিভেট করা () ডকুমেন্টটিকে সম্মুখভাগ সক্রিয় বর্তমান নথিতে জোর করতে। ফলাফলটি যদি 4 হয় তবে এর অর্থ হ'ল পাঠ্যটি প্রতিস্থাপন করা হয়েছিল। জিরো মানে কিছুই হয়নি। আপনি প্রতিটি ফাইলের জন্য দুটি সেভ দেখতে পাবেন। প্রথমটি প্রতিস্থাপন করবে এবং দ্বিতীয়টি কিছুই করবে না। সম্ভবত সেভ ফাইলটি লিখতে না পারলে সমস্যা হতে পারে তবে আশা করি এমনটি ঘটলে এই ইভেন্টটি ডাকা হবে না।

মূল স্ক্রিপ্টের আগে, ভিজুয়াল স্টুডিওতে স্ক্রিপ্টটি কীভাবে কাজ করে তা সম্পর্কে আমি অসচেতন ছিলাম। এটি সামান্য অবাক হওয়ার বিষয় যে এটি ভিজ্যুয়াল বেসিকটিকে প্রধান ইন্টারফেস হিসাবে ব্যবহার করে তবে এটি যা করা দরকার তা ঠিক ঠিক কাজ করে।


এর মধ্যে একটি পরিবর্তন হ'ল উইন্ডোতে ফোকাসটি সংরক্ষণ এবং পুনরুদ্ধারকে সমর্থন করা যখন সেভ শুরু হয়েছিল তখন ফোকাস ছিল। সক্রিয় দস্তাবেজটি চেষ্টা করার পরে (কার্ডোক = ডিটিইই.অ্যাকটিভ ডকুমেন্ট ব্যবহার করে) এবং নথির আগে সংরক্ষণ করুন cএকটিভেট ()) সংরক্ষণ সম্পূর্ণ হওয়ার পরে, কেবল আসল দস্তাবেজটি সক্রিয় করুন (কার্ডোক.অ্যাক্টিভেট ())। সেভ করার সময় ফোকাসটি চারদিকে ঘুরলে কিছুটা মজাদার লাগছে তবে আপনি যে কোডটি দেখছিলেন না সেদিকে ফোকাস হারিয়ে ফেলার চেয়ে ভাল।
জেফ মুইর

-1

একটি সরল সংযোজন হ'ল সংরক্ষণের সময় গাড়ীর রিটার্ন সরিয়ে ফেলা।

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

এই কাজের মূল কীটি \ x000d \ x000a থেকে to x000a এ পরিবর্তন করছে is Pre x উপসর্গটি একটি ইউনিকোড প্যাটার্ন নির্দেশ করে। এটি লিনাক্স সিস্টেমগুলির জন্য উত্স ফাইলগুলি প্রস্তুত করার প্রক্রিয়াটি স্বয়ংক্রিয় করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.