Is there a shortcut to move between header and source file in VC++?

后端 未结 16 897
长发绾君心
长发绾君心 2020-12-04 08:07

This is a feature I have grown accustomed to in Eclipse (Ctrl+Tab). Is there an equivalent in Visual C++?

相关标签:
16条回答
  • 2020-12-04 08:27

    In Visual Studio 2013 and later there is a default keyboard shortcut for this: Ctrl+K, Ctrl+O (You will need to hold down Ctrl and type ko and then release Ctrl)

    In earlier versions, see:

    Visual Studio Macro to switch between CPP and H files

    or

    Open Corresponding File in Visual Assist

    0 讨论(0)
  • 2020-12-04 08:28

    You could add this macro to your VS config (via Tools -> Macros -> Macro Explorer) then assign a hotkey to it (via Tools -> Options -> Environment -> Keyboard).

    I only just wrote it (been meaning to try this for ages!) but it seems to work so far, in both VS2008 and VS2010.

    Since it's a macro you can edit it to include whatever rules you want (e.g. looking in other folders, or special naming rules if you have a single header shared by multiple cpp files or similar).

    Here's the macro (I'm sure it could be better written; I'm unfamiliar with the VS objects and only realised macros were using .Net about half-way through writing the thing :)):

    Sub FileSwitch()
        Try
            Dim CurrentPath As String = DTE.ActiveDocument.FullName
            Dim OtherPath As String
    
            If (IO.Path.HasExtension(CurrentPath)) Then
                Dim CurrentExtension As String = IO.Path.GetExtension(CurrentPath)
    
                Select Case CurrentExtension
                    Case ".h", ".hpp", ".hxx"
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cpp")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".c")
                            If (Not IO.File.Exists(OtherPath)) Then
                                OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cxx")
                            End If
                        End If
                    Case ".cpp", ".c", ".cxx"
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".h")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hpp")
                            If (Not IO.File.Exists(OtherPath)) Then
                                OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hxx")
                            End If
                        End If
                    Case Else
                End Select
                If (OtherPath <> Nothing) Then
                    DTE.ItemOperations.OpenFile(OtherPath)
                End If
            End If
    
        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    

    Here's a (very wide :)) screenshot showing what the macro editor and hotkey/options dialogs should look like, to help those not familiar with them:

    enter image description here

    0 讨论(0)
  • 2020-12-04 08:28

    In their (in)finite wisdom, MS decided to remove macros in MSVS 2012, so the macro above won't work.

    For MSVS 2012, I found this:

    http://www.dwmkerr.com/switch/

    It's highly configurable + if you want to help improving it, you can do so on GitHub.

    0 讨论(0)
  • 2020-12-04 08:29

    I'm a fan of Visual Assist for doing this. Its not cheap but it provides a lot more functionality than switching between header and source. I also use its open file in project and class browsing features a lot. Of course the macro is free...

    0 讨论(0)
  • 2020-12-04 08:30

    I don't see this answer here, but at least in Visual Studio 2012 (Express included!), you can just assign your own keyboard command to go to the header file (NOTE: Only goes one way -- you can't go back to the source file unfortunately...)

    1. Go to Tools/Options/Environment/Keyboard.
    2. Find the following command: EditorContextMenus.CodeWindow.GoToHeaderFile
    3. Assign whatever key combination you want (Alt-S works)
    4. Profit

    Not sure which versions of VS this works in, but it doesn't require any add-ins and seems to do the trick in at least one direction.

    0 讨论(0)
  • 2020-12-04 08:31

    Try PhatStudio. It's free and comes with an easy installer.

    • ALT + S = Switch between header/source file

    • ALT + O = Open a file (supports instant search via typing, like the start menu in Windows Vista/7).

    0 讨论(0)
提交回复
热议问题