कैसे जावास्क्रिप्ट में क्षेत्रों / कोड पतन को लागू करने के लिए


132

आप जावास्क्रिप्ट के लिए विज़ुअल स्टूडियो में क्षेत्रों उर्फ ​​कोड को कैसे लागू कर सकते हैं?

यदि जावास्क्रिप्ट में सैकड़ों लाइनें हैं, तो यह vb / C # जैसे क्षेत्रों के साथ कोड फोल्डिंग का उपयोग करके अधिक समझ में आएगा।

#region My Code

#endregion

1
इन समाधानों में से किसी ने भी मेरे लिए काम नहीं किया। stackoverflow.com/questions/46267908/…
माइकल ड्रम

जवाबों:


25

ब्लॉग प्रविष्टि यहाँ यह बताते हैं और इस MSDN सवाल

आपको Visual Studio 2003/2005/2008 Macros का उपयोग करना होगा।

निष्ठा के लिए ब्लॉग प्रविष्टि से कॉपी + पेस्ट करें:

  1. मैक्रो एक्सप्लोरर खोलें
  2. एक नया मैक्रो बनाएँ
  3. नाम दें OutlineRegions
  4. मैक्रो पर क्लिक करें और निम्नलिखित VB कोड पेस्ट करें:
Option Strict Off
Option Explicit Off

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports System.Collections

Public Module JsMacros

    Sub OutlineRegions()
        Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection

        Const REGION_START As String = "//#region"
        Const REGION_END As String = "//#endregion"

        selection.SelectAll()
        Dim text As String = selection.Text
        selection.StartOfDocument(True)

        Dim startIndex As Integer
        Dim endIndex As Integer
        Dim lastIndex As Integer = 0
        Dim startRegions As Stack = New Stack()

        Do
            startIndex = text.IndexOf(REGION_START, lastIndex)
            endIndex = text.IndexOf(REGION_END, lastIndex)

            If startIndex = -1 AndAlso endIndex = -1 Then
                Exit Do
            End If

            If startIndex <> -1 AndAlso startIndex < endIndex Then
                startRegions.Push(startIndex)
                lastIndex = startIndex + 1
            Else
                ' Outline region ...
                selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                selection.OutlineSection()

                lastIndex = endIndex + 1
            End If
        Loop

        selection.StartOfDocument()
    End Sub

    Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
        Dim lineNumber As Integer = 1
        Dim i As Integer = 0

        While i < index
            If text.Chars(i) = vbCr Then
                lineNumber += 1
                i += 1
            End If

            i += 1
        End While

        Return lineNumber
    End Function

End Module
  1. मैक्रो को सहेजें और संपादक को बंद करें
  2. अब मैक्रो को शॉर्टकट असाइन करते हैं। टूल-> विकल्प-> पर्यावरण-> कीबोर्ड पर जाएं और "मैक्ज़ कमांड जिसमें" टेक्स्टबॉक्स हो, में अपने मैक्रो को खोजें
  3. अब "प्रेस शॉर्टकट कुंजियों" के तहत टेक्स्टबॉक्स में आप वांछित शॉर्टकट दर्ज कर सकते हैं। मैं Ctrl + M + E का उपयोग करता हूं। मुझे नहीं पता कि क्यों - मैंने इसे पहली बार दर्ज किया है और अब इसका उपयोग करता हूं :)

यह एक उपयोगी है और साइट की टिप्पणियों से ध्यान देने योग्य महत्वपूर्ण बिंदु है "आपको अपने नए मैक्रो के नाम के साथ उपरोक्त कोड में मॉड्यूल का नाम देखना होगा। दोनों नामों का मिलान होना चाहिए!"
प्रसाद १

क्या यह VS2010 पर काम करता है? मैं नहीं कर सकता। मैक्रो इसे खोजते समय नहीं दिखाता है।
मिस्टर फ्लिबल

@श्री। फ्लिबल: नॉट श्योर .. मेरे पास केवल VS2005 है।

ठीक है। मैंने यहां एक नए प्रश्न में पूछा है: stackoverflow.com/questions/2923177/…
मिस्टर फ्लिबल

Microsoft के पास अब VS2010 के लिए एक एक्सटेंशन है जो यह कार्यक्षमता प्रदान करता है (लिंक के लिए नीचे मेरा उत्तर देखें)।
ब्रायनफिंकल

52

Microsoft के पास अब VS 2010 के लिए एक एक्सटेंशन है जो यह कार्यक्षमता प्रदान करता है:

JScript संपादक एक्सटेंशन


यह शानदार है! मुझे उम्मीद है कि वे इसे अगले वीएस अपडेट में शामिल करेंगे। साझा करने के लिए धन्यवाद!
विलियम नीयू

वास्तव में अद्भुत विस्तार, तीसरे पक्ष के विस्तार से भी बेहतर है।
होविस बिडल

2
यह 2012 और 2013 के लिए हो रहा है?
जैक्स

1
यह भी खूब रही! क्या वीएस 2012 या 2013 के लिए कोई संस्करण है?
एक्सल

50

डेवलपर्स के लिए अच्छी खबर है जो दृश्य स्टूडियो के नवीनतम संस्करण के साथ काम कर रहे हैं

वेब अनिवार्य इस सुविधा के साथ आ रहे हैं।

इसकी जांच करें

यहाँ छवि विवरण दर्ज करें

नोट: वीएस 2017 के लिए जावास्क्रिप्ट क्षेत्र का उपयोग करें : https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions


@William किसी दिन लोगों को यह सुनिश्चित करने की आवश्यकता होगी;)
कौशिक थानकी

2
जैसा कि समय चल रहा है, यह डिफैक्टो का स्वीकृत उत्तर होगा।
हकन फिएस्टीक

VSCode के नवीनतम संस्करण के साथ सही काम करता है - टाइप करें 6/10/2019।
एडी हावर्ड

40

यह आसान है!

उस अनुभाग को चिह्नित करें जिसे आप गिराना चाहते हैं और,

Ctrl + M + H

और इसके बाईं ओर '+' चिह्न के उपयोग का विस्तार करने के लिए।


3
इसने काम कर दिया!। मुझे बचाया क्योंकि इसने मेरा कोड पतला बना दिया क्योंकि मेरे पास एक ही अजाक्स कॉल के तहत बहुत सारे अजाक्स कॉल हैं।
सोरंगवाला अब्बासाली

3
यह एक अस्थायी समाधान है। यदि आप फ़ाइल को बंद करते हैं और फिर से खोलते हैं, तो चयनित क्षेत्र गायब हो जाता है।
वननीसफ्रेंड

32

विज़ुअल स्टूडियो 2012 का उपयोग करने वालों के लिए, वेब एसेंशियल 2012 मौजूद है

उन लोगों के लिए जो दृश्य स्टूडियो 2015 का उपयोग करते हैं, वेब एसेंशियल 2015.3 मौजूद है

उपयोग ठीक वैसा ही है जैसा @प्रसाद ने पूछा


4
+1 - इसका उत्तर होना चाहिए, क्योंकि अब तक ज्यादातर लोग 2012/2013 का उपयोग करेंगे! (यह 2013 के लिए भी काम करता है)
पीटर अल्बर्ट

26

कोड के एक खंड (किसी भी तार्किक ब्लॉकों की परवाह किए बिना) को चिह्नित करके और CTRL + M + H को हिट करने से आप चयन को एक ऐसे क्षेत्र के रूप में परिभाषित करेंगे जो संक्षिप्त और विस्तार योग्य है।


धन्यवाद! क्या आप मुझे बता सकते हैं कि अगर मैं गलती से एक क्षेत्र बना दूं जिसे मैं हटाना या बदलना चाहता हूं तो इसे कैसे पूर्ववत करें?
टिंगो

3
आप CTRL + M + U के साथ पूर्ववत कर सकते हैं - वहाँ अधिक शॉर्टकट: msdn.microsoft.com/en-us/library/td6a5x4s.aspx
laurian


9

शानदार उत्तर के लिए 0A0D का धन्यवाद । मैंने इसके साथ शुभकामनाएं दी हैं। डारिन दिमित्रोव भी आपकी जेएस फाइलों की जटिलता को सीमित करने के बारे में एक अच्छा तर्क देता है। फिर भी, मुझे ऐसे अवसर मिलते हैं जहाँ उनकी परिभाषाओं के अनुसार कार्य गिरना फ़ाइल को ब्राउज़ करना बहुत आसान बना देता है।

सामान्य रूप से # भाग के बारे में, यह एसओ प्रश्न इसे काफी अच्छी तरह से कवर करता है।

मैंने अधिक उन्नत कोड पतन का समर्थन करने के लिए मैक्रो में कुछ संशोधन किए हैं। यह विधि आपको // # क्षेत्र कीवर्ड ala C # के बाद एक विवरण डालने की अनुमति देती है और कोड में दिखाया गया है:

उदाहरण कोड:

//#region InputHandler
var InputHandler = {
    inputMode: 'simple', //simple or advanced

    //#region filterKeys
    filterKeys: function(e) {
        var doSomething = true;
        if (doSomething) {
            alert('something');
        }
    },
    //#endregion filterKeys

    //#region handleInput
    handleInput: function(input, specialKeys) {
        //blah blah blah
    }
    //#endregion handleInput

};
//#endregion InputHandler

अपडेटेड मैक्रो:

Option Explicit On
Option Strict On

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Imports System.Collections.Generic

Public Module JsMacros


    Sub OutlineRegions()
        Dim selection As EnvDTE.TextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection)

        Const REGION_START As String = "//#region"
        Const REGION_END As String = "//#endregion"

        selection.SelectAll()
        Dim text As String = selection.Text
        selection.StartOfDocument(True)

        Dim startIndex As Integer
        Dim endIndex As Integer
        Dim lastIndex As Integer = 0
        Dim startRegions As New Stack(Of Integer)

        Do
            startIndex = text.IndexOf(REGION_START, lastIndex)
            endIndex = text.IndexOf(REGION_END, lastIndex)

            If startIndex = -1 AndAlso endIndex = -1 Then
                Exit Do
            End If

            If startIndex <> -1 AndAlso startIndex < endIndex Then
                startRegions.Push(startIndex)
                lastIndex = startIndex + 1
            Else
                ' Outline region ...
                Dim tempStartIndex As Integer = CInt(startRegions.Pop())
                selection.MoveToLineAndOffset(CalcLineNumber(text, tempStartIndex), CalcLineOffset(text, tempStartIndex))
                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                selection.OutlineSection()

                lastIndex = endIndex + 1
            End If
        Loop

        selection.StartOfDocument()
    End Sub

    Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer) As Integer
        Dim lineNumber As Integer = 1
        Dim i As Integer = 0

        While i < index
            If text.Chars(i) = vbLf Then
                lineNumber += 1
                i += 1
            End If

            If text.Chars(i) = vbCr Then
                lineNumber += 1
                i += 1
                If text.Chars(i) = vbLf Then
                    i += 1 'Swallow the next vbLf
                End If
            End If

            i += 1
        End While

        Return lineNumber
    End Function

    Private Function CalcLineOffset(ByVal text As String, ByVal index As Integer) As Integer
        Dim offset As Integer = 1
        Dim i As Integer = index - 1

        'Count backwards from //#region to the previous line counting the white spaces
        Dim whiteSpaces = 1
        While i >= 0
            Dim chr As Char = text.Chars(i)
            If chr = vbCr Or chr = vbLf Then
                whiteSpaces = offset
                Exit While
            End If
            i -= 1
            offset += 1
        End While

        'Count forwards from //#region to the end of the region line
        i = index
        offset = 0
        Do
            Dim chr As Char = text.Chars(i)
            If chr = vbCr Or chr = vbLf Then
                Return whiteSpaces + offset
            End If
            offset += 1
            i += 1
        Loop

        Return whiteSpaces
    End Function

End Module

6
वीएस 2010 में एक अपडेटेड एक्सटेंशन फ्रेमवर्क है और कोई व्यक्ति "विज़ुअल स्टूडियो 2010 जावास्क्रिप्ट आउटलाइनिंग
माइकल ला

2
क्या हम VB के बजाय C # में मैक्रो लिख सकते हैं?
xport

6

यह अब VS2017 में मूल रूप से है:

//#region fold this up

//#endregion

// और # के बीच व्हॉट्सएप कोई फर्क नहीं पड़ता।

मुझे नहीं पता कि यह किस संस्करण में जोड़ा गया था, क्योंकि मुझे चैंज में इसका कोई उल्लेख नहीं मिला। मैं इसे v15.7.3 में उपयोग करने में सक्षम हूं।



0

यदि आप Resharper का उपयोग कर रहे हैं

इस तस्वीर में चरणों को गिराना

यहाँ छवि विवरण दर्ज करें फिर इसे टेम्पलेट एडिटर में लिखें

  //#region $name$
$END$$SELECTION$
  //#endregion $name$

और #regionइस चित्र में इसे नाम देंयहाँ छवि विवरण दर्ज करें

आशा है कि यह आपकी मदद करेगा


0

इनमें से किसी भी उत्तर ने मेरे लिए दृश्य स्टूडियो 2017 के साथ काम नहीं किया।

वीएस 2017 के लिए सबसे अच्छा प्लगइन: जावास्क्रिप्ट क्षेत्र

उदाहरण 1:

यहाँ छवि विवरण दर्ज करें

उदाहरण 2:

यहाँ छवि विवरण दर्ज करें

परीक्षण और अनुमोदित:

यहाँ छवि विवरण दर्ज करें


आपका जवाब बस इस एक
Pavlo Zhukov

जैसा कि मैं संपादित इतिहास में देखता हूं, 2016 में आरंभिक सबमिट के बाद छवि URL में कोई परिवर्तन नहीं हुए थे
पावलो

0

दृश्य स्टूडियो 2017 के लिए।

    //#region Get Deactivation JS
    .
    .
    //#endregion Get Deactivation JS

यह पहले काम नहीं कर रहा था इसलिए मैंने यहां से एक्सटेंशन डाउनलोड किया


-2

क्षेत्र को सेटिंग्स को बदले बिना काम करना चाहिए

//#region Optional Naming
    var x = 5 -0; // Code runs inside #REGION
    /* Unnecessary code must be commented out */
//#endregion

टिप्पणी क्षेत्र को ढहाने में सक्षम बनाने के लिए / ** /

/* Collapse this

*/

सेटिंग्स -> "तह" खोजें -> संपादक: तह रणनीति -> "ऑटो" से "इंडेंटेशन"।

TAGS: Node.js Nodejs Node js Javascript ES5 ECMAScript टिप्पणी तह छुपा क्षेत्र दृश्य स्टूडियो कोड vscode 2018 संस्करण 1.2+ https://code.visualstudio.com/updates/v1/17#_folding-regions


-3

न केवल वीएस के लिए, बल्कि सभी संपादकों के लिए।

(function /* RegionName */ () { ... })();

चेतावनी: इसमें स्कोप जैसे नुकसान हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.