2012-03-30 2 views
4

Access VB6 코드 편집기에서 Ctrl-Up 및 Ctrl-Down은 다음/prev 함수 선언으로 건너 뜁니다.VS2010 다음/이전 기능 탐색 단축키로 이동?

이것은 매우 편리한 탐색 도구이며 VS2010에서 찾을 수없는 것 같습니다.

Google 및 stackoverflow에서 검색을 수행 했으므로 여기에 대한 참조를 찾을 수 없습니다.

이 단축키가 VS2010에 존재하는지 아는 사람이 있습니까?

그렇지 않은 경우 VS2010과 같은 컨텍스트 인식 IDE에 도대체 어떻게 존재하지 않을 수 있습니까?

답변

1

예 단축키가 존재 : http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx

그리고 별도의 선언으로 이동 : Shift + Ctrl + 1/Shift + Ctrl 키 + 2

+0

이들은 나를 위해 작동하지 않는 것 같습니다. VS2010 핫키 편집기에서 실제 명령이 무엇인지 알 수 있습니다. 또한 해당 페이지의 설명을 보면 커서 아래의 변수/기능을 기반으로 탐색하는 것이 더 많은 것처럼 보입니다. – Ashy

+0

사용하는 언어에 따라 다릅니다. 각 언어에 대해 Microsoft는 별도의 단축키 모음에 해당하는 pdf 파일을 제공합니다. – Rich

+0

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13189 – Rich

0

나는 그들이 VS2010에 존재 생각하지 않는다, 우리는에서 작동 VS6과 2010 모두 이러한 명령을 사용하지 않도록 분노하고 있습니다.

0

요즘 자동화 기능이있는 OCD이므로 탐색에 도움이되는 많은 매크로가 만들어졌습니다. 다음은 C에서 (그리고 아마도 C++에서도) 원하는 것을 할 수있는 VB 매크로 코드입니다. Visual Studio에서 매크로를 만들고이 줄을 매크로에 추가 할 수 있습니다. 함수 선언을 탐지하는 정규 표현식은 완벽하지는 않겠지 만 지금은 1 주일 동안 사용 해왔다. 원하는 경우이 두 매크로를 원하는 키 바인딩 (Ctrl + Up 또는 Ctrl + Down)에 매핑 할 수 있습니다. 누구든지 정규 표현식을 개선하면 업데이트 된 버전을보고 싶습니다.

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports EnvDTE90a 
Imports EnvDTE100 
Imports System.Diagnostics 
Imports System.Text.RegularExpressions 

Public Module NavigationMacros 
    Private Function IsFunctionDeclaration(ByRef LineText As String) As Boolean 
     If Regex.IsMatch(LineText, "^[^\s\d\W\(\)]+[^\(\)]+\s+[^\s\d\W\(\)]+\s*\([^\(\)]*\)\s*$") Then 
      IsFunctionDeclaration = True 
     Else 
      IsFunctionDeclaration = False 
     End If 
    End Function 

    Private Function GetLineText(ByRef EditPoint As EnvDTE.EditPoint) As String 
     EditPoint.StartOfLine() 
     GetLineText = EditPoint.GetText(EditPoint.LineLength) 
    End Function 

    Sub GoToPreviousFunctionDeclaration() 
     Dim Selection As EnvDTE.TextSelection 
     Dim EditPoint As EnvDTE.EditPoint 
     Dim LineText As String 

     Selection = DTE.ActiveDocument.Selection 
     EditPoint = Selection.TopPoint.CreateEditPoint 

     EditPoint.LineUp() 

     While IsFunctionDeclaration(GetLineText(EditPoint)) = False And Not EditPoint.AtStartOfDocument 
      EditPoint.LineUp() 
     End While 

     If Not EditPoint.AtEndOfDocument Then 
      Selection.MoveToLineAndOffset(EditPoint.Line, 1) 
     End If 
    End Sub 

    Sub GoToNextFunctionDeclaration() 
     Dim Selection As EnvDTE.TextSelection 
     Dim EditPoint As EnvDTE.EditPoint 
     Dim LineText As String 

     Selection = DTE.ActiveDocument.Selection 
     EditPoint = Selection.TopPoint.CreateEditPoint 

     EditPoint.LineDown() 

     While IsFunctionDeclaration(GetLineText(EditPoint)) = False And Not EditPoint.AtEndOfDocument 
      EditPoint.LineDown() 
     End While 

     If Not EditPoint.AtEndOfDocument Then 
      Selection.MoveToLineAndOffset(EditPoint.Line, 1) 
     End If 
    End Sub 
End Module