답변:
블로그 항목은 여기 와이 MSDN 질문에 대해 설명합니다 .
Visual Studio 2003/2005/2008 매크로를 사용해야합니다.
충실도를 위해 블로그 항목에서 복사 + 붙여 넣기 :
OutlineRegions
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
Microsoft는 이제이 기능을 제공 하는 VS 2010 의 확장 기능을 갖습니다 .
최신 버전의 Visual Studio를 사용하는 개발자에게 희소식
웹 요점은 이 기능을오고있다.
참고 : VS 2017의 경우 JavaScript 리전 사용 : https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions
간단합니다!
접고 싶은 부분을 표시하고
Ctrl + M + H
확장하려면 왼쪽에 '+'표시를 사용하십시오.
Visual Studio 2012를 사용하려는 사람들을 위해 Web Essentials 2012가 있습니다.
Visual Studio 2015를 사용하려는 사람들을 위해 Web Essentials 2015가 있습니다 .3
사용법은 @prasad와 정확히 같습니다.
논리 블록에 관계없이 코드 섹션을 표시하고 CTRL + M + H를 누르면 선택 영역이 축소 가능하고 확장 가능한 영역으로 정의됩니다.
좋은 답변 을 주신 0A0D 에게 감사드립니다 . 나는 행운을 빕니다. Darin Dimitrov 는 또한 JS 파일의 복잡성을 제한하는 것에 대해 좋은 주장을합니다. 그럼에도 불구하고 정의에 대한 축소 기능으로 인해 파일을 훨씬 쉽게 탐색 할 수있는 경우가 있습니다.
일반적으로 #region과 관련 하여이 SO Question 은이를 잘 다루고 있습니다.
고급 코드 축소를 지원하기 위해 매크로를 약간 수정했습니다. 이 메소드를 사용하면 // # region 키워드 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
VS 2012 및 VS 2015에서 WebEssentials 플러그인을 설치하면 그렇게 할 수 있습니다.
Resharper를 사용하는 경우
이 사진의 단계를 포기
//#region $name$
$END$$SELECTION$
//#endregion $name$
이것이 당신을 도울 수 있기를 바랍니다
이 답변 중 어느 것도 Visual Studio 2017에서 작동하지 않았습니다.
VS 2017을위한 최고의 플러그인 : JavaScript Regions
예 1 :
예 2 :
테스트 및 승인 :
지역은 설정을 변경하지 않고 작동해야합니다
//#region Optional Naming
var x = 5 -0; // Code runs inside #REGION
/* Unnecessary code must be commented out */
//#endregion
축소 주석 영역을 활성화하려면 / ** /
/* Collapse this
*/
설정-> "폴딩"검색-> 편집기 : 접기 전략-> "자동"에서 "들여 쓰기"로.
태그 : Node.js Nodejs Node js Javascript ES5 ECMAScript 주석 접기 숨기기 영역 Visual Studio 코드 vscode 2018 버전 1.2 이상 https://code.visualstudio.com/updates/v1_17#_folding-regions