2012-03-30 79 views
4

在Access VB6代碼編輯器中,Ctrl-Up和Ctrl-Down將跳轉到下一個/ prev函數聲明。什麼是VS2010導航到Next/Prev函數聲明熱鍵?

這是一個非常方便的導航工具,我似乎無法在VS2010中找到它。

我已經做了一些搜索谷歌和stackoverflow,似乎無法找到任何參考。

有誰知道這些熱鍵在VS2010中是否存在?

如果他們不這樣,他們怎麼會不能像VS2010那樣在環境感知的IDE中存在?

回答

1

是熱鍵存在:http://www.dofactory.com/ShortCutKeys/ShortCutKeys.aspx

並移動到單獨的聲明: SHIFT + CTRL + 1/SHIFT + CTRL + 2

+0

這些似乎不適用於我。任何想法在VS2010熱鍵編輯器中調用實際的命令? 同樣根據該頁面上的描述來判斷,它看起來更像是基於光標下的變量/函數進行導航。 – Ashy 2012-03-30 02:15:41

+0

這取決於您使用的是哪種語言。對於每種語言,microsoft提供了一個與單獨的熱鍵集合相對應的pdf文件。 – Rich 2012-03-30 02:21:39

+0

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13189 – Rich 2012-03-30 02:22:04

0

我不認爲他們在VS2010存在,我們在工作無論是VS6還是2010,真氣都沒有這些命令。

0

我這些日子都是自動化的強迫症,已經做了很多宏來幫助我導航。以下是一些VB宏代碼,它們將在C中完成你想要的功能(也可能是C++)。您可以在Visual Studio中創建一個宏,並將這些行添加到它。用於檢測函數聲明的正則表達式可能並不完美,但我已經使用它們一個星期了,他們已經爲我工作得很好。您可以將這2個宏映射到您想要的鍵綁定,如果您願意,可以按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