web-dev-qa-db-fra.com

Existe-il un raccourci pour passer d'un en-tête à un fichier source dans VC ++?

C’est une fonction à laquelle je me suis habitué dans Eclipse (Ctrl+Tab). Existe-t-il un équivalent dans Visual C++?

98
JeffV

Dans Visual Studio 2013 et versions ultérieures, il existe un raccourci clavier par défaut pour cela: Ctrl+KCtrl+O (Vous devrez maintenir Ctrl et taper ko puis relâche Ctrl )

Dans les versions antérieures, voir:

Macro Visual Studio pour basculer entre les fichiers CPP et H

ou

Ouvrir le fichier correspondant dans Visual Assist

121
Kyle Alons

Dans Visual Studio 2013, un raccourci clavier par défaut est Ctrl+KCtrl+O

30
Anton K

Vous pouvez ajouter cette macro à votre configuration VS (via Outils -> Macros -> Explorateur de macros), puis lui attribuer un raccourci clavier (via Outils -> Options -> Environnement -> Clavier).

Je viens juste de l'écrire (je voulais essayer cela depuis des lustres!), Mais cela semble fonctionner jusqu'à présent, à la fois dans VS2008 et VS2010.

Étant donné qu’il s’agit d’une macro, vous pouvez la modifier pour inclure les règles de votre choix (recherche dans d’autres dossiers, règles de dénomination spéciales, par exemple, si vous avez un en-tête unique partagé par plusieurs fichiers cpp ou similaire).

Voici la macro (je suis sûr que cela pourrait être mieux écrit; je ne suis pas familier avec les objets VS et seules les macros réalisaient que .Net utilisait à peu près à la moitié de l'écriture de la chose :)):

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

Voici une capture d'écran (très large :) montrant ce à quoi doivent ressembler l'éditeur de macro et les boîtes de dialogue raccourci clavier/options, pour aider ceux qui ne le connaissent pas:

enter image description here

24
Leo Davidson

Essayez Visual Assist, qui présente cette fonctionnalité (entre autres):

http://www.wholetomato.com/

Les fonctionnalités de navigation dans le code, dont l’en-tête swap cpp/en-tête, sont vraiment utiles.

(J'ai également évalué ses fonctionnalités intellisense et de refactoring, mais toutes les personnes à qui j'ai parlé ne sont pas d'accord avec moi.)

EDIT: je viens juste de me rappeler que le plug-in de solution Nifty effectue également cette opération, en plus d'une autre fonctionnalité très pratique, comme Visual Assist, mais rien d'autre, et ils sont gratuits:

http://code.google.com/p/niftyplugins/

(Le plugin du gars est forcément génial aussi. Bien mieux que les ordures par défaut de VSSCC.)

8
please delete me

Essayez PhatStudio . C'est gratuit et vient avec un installateur facile.

  • ALT + S = Basculer entre en-tête/fichier source

  • ALT + O = Ouvrir un fichier (supporte la recherche instantanée via la frappe, comme le menu Démarrer de Windows Vista/7).

8
Tymek

Je ne vois pas cette réponse ici, mais au moins dans Visual Studio 2012 (Express inclus!), Vous pouvez simplement assigner votre propre commande de clavier pour accéder au fichier d'en-tête (REMARQUE: ne va que dans un sens - vous ne pouvez pas aller retour au fichier source malheureusement ...)

  1. Allez dans Outils/Options/Environnement/Clavier.
  2. Recherchez la commande suivante: EditorContextMenus.CodeWindow.GoToHeaderFile
  3. Attribuez la combinaison de touches souhaitée (Alt-S fonctionne)
  4. Profit

Vous ne savez pas dans quelles versions de VS cela fonctionne, mais cela ne nécessite aucun complément et semble faire l'affaire dans au moins une direction.

5
aardvarkk

Dans Visual Studio 2008 et 2010, vous pouvez cliquer avec le bouton droit de la souris sur votre fichier .cpp et choisir Accéder au fichier d'en-tête ... qui vous mènera dans une direction. Pour l’autre direction, si vous cliquez avec le bouton droit de la souris sur quelque chose que vous déclarez dans l’en-tête et choisissez Aller à la définition, cela vous mènera dans l’autre direction. Vous devrez peut-être passer par une boîte de dialogue de résolution d'ambiguïté si vous choisissez le constructeur, car le nom de la fonction correspond au nom de la classe, mais si vous choisissez une autre option, vous irez directement où vous le souhaitez. Je sais que c’est une approche en deux clics, plutôt qu’une frappe au clavier, mais elle fait ce que vous voulez.

5
Kate Gregory

Si vous positionnez votre souris sur une déclaration de fonction dans l'en-tête et appuyez sur F12, le fichier cpp sera ouvert à la définition du fichier cpp ... J'utilise cette fonctionnalité à fond!

4
user206705

Essayez d’utiliser Switch, c’est un complément qui vous permet de feuilleter source et en-tête, code et concepteur, XAML et codebehind, etc.

http://www.dwmkerr.com/switch/ ou directement à partir de Produits et extensions pour Visual Studio

4
Dave Kerr

Je suis fan de Visual Assist pour cela. Ce n’est pas bon marché, mais il offre beaucoup plus de fonctionnalités que de passer de l’en-tête à la source. J'utilise aussi beaucoup son fichier ouvert dans les fonctionnalités de navigation dans les projets et les classes. Bien sûr la macro est gratuite ...

3
JohnO

Il existe également une macro répertoriée sur le forum de support Whole Tomato qui contient quelques mappages de fichiers supplémentaires.

2
sean e

Pour Visual Studio 2013, comme mentionné par d'autres, il s'agit de la commande nommée:

EditorContextMenus.CodeWindow.ToggleHeaderCodeFile

et il a comme combinaison de touches par défaut: Ctrl+K,Ctrl+O, mais cela peut être changé si vous introduisez la nouvelle combinaison de touches que vous aimez dans le menu déroulant.

Appuyez sur les touches de raccourci:

sous

Outils -> Options -> Environnement -> Clavier.

Ainsi, vous pouvez choisir une combinaison de touches personnalisée comme mon favori pour le commutateur .h à .cpp est Ctrl+Tab.

2
meJustAndrew

Visual assist ne prend pas non plus en charge les éditions Visual Studio Express. Donc, vous êtes coincé avec la macro si vous utilisez cet IDE>

1
Fion

Dans Visual Studio 2008, c'est Alt + O.

0
Marek Szanyi

Dans Visual Studio 2013, il s'agit de ALT + O

0
Sagi

Dans leur sagesse (in) finie, MS a décidé de supprimer les macros dans MSVS 2012 afin que la macro ci-dessus ne fonctionne pas.

Pour MSVS 2012, j'ai trouvé ceci:

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

C'est hautement configurable + si vous voulez aider à l'améliorer, vous pouvez le faire sur GitHub.

0
Csimbi