Existe-t-il un raccourci pour se déplacer entre l'en-tête et le fichier source dans VC ++?

112

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

JeffV
la source
Voir aussi cette question
idbrii
@ LưuVĩnhPhúc Lorsque vous êtes dans un en-tête ou un code source dans Eclipse, appuyez sur Alt-Tab et Eclipse devrait basculer entre la source et l'en-tête, en supposant que le projet soit correctement indexé.
MrMas

Réponses:

138

Dans Visual Studio 2013 et versions ultérieures, il existe un raccourci clavier par défaut pour cela: Ctrl+ K, Ctrl+ O (vous devrez maintenir la touche Ctrl enfoncée et taper ko , puis relâcher 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

Kyle Alons
la source
2
Visual Assist est un excellent outil - je le recommande à tous les développeurs utilisant MSVC
Stephen Nutt
10
Pour les utilisateurs paresseux de VisualAssist:Alt + O
nimcap
2
quelqu'un a-t-il une solution pour VS2013?
Shaun Rowan
5
Il est intégré à VS 2013. blogs.msdn.com/b/vcblog/archive/2013/08/23/…
Kyle Alons
3
Ok, mon mauvais. Je n'ai pas réalisé que Ctrl + K & Ctrl + O est en fait une commande de raccourci SINGLE; pas deux options identiques. Cela vaut peut-être la peine d'être mentionné dans la réponse pour les nouveaux utilisateurs de VS :)
Petr Peller
31

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

Anton K
la source
ne fonctionne pas pour moi 2013 Community Edition. Réglages généraux. Quel est le nom de la commad dans la fenêtre Personnaliser / Clavier?
Jurlie
12
Nom de la commande:EditorContextMenus.CodeWindow.ToggleHeaderCodeFile
codekaizen
24

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.

Puisqu'il s'agit d'une macro, vous pouvez la modifier pour inclure les règles de votre choix (par exemple, chercher dans d'autres dossiers, ou des règles de dénomination spéciales si vous avez un seul en-tête partagé par plusieurs fichiers cpp ou similaires).

Voici la macro (je suis sûr qu'elle pourrait être mieux écrite; je ne suis pas familier avec les objets VS et je me suis rendu compte que seules les macros utilisaient .Net à mi-chemin 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 à quoi devraient ressembler l'éditeur de macros et les boîtes de dialogue des raccourcis clavier / options, pour aider ceux qui ne les connaissent pas:

entrez la description de l'image ici

Leo Davidson
la source
1
Une autre astuce de macro VS préférée: enregistrez une macro pour attacher le débogueur à l'exe sur lequel vous travaillez toujours, puis collez-la dans la barre d'outils. Pièce jointe en un clic à ce processus en cours d'exécution chaque fois que vous avez besoin de le déboguer.
Leo Davidson
Wow c'est génial! Fonctionne mieux que le plug-in Nifty Solutions, car le plug-in ne peut basculer qu'entre .h et .cpp, il ne passe pas de .hpp à .cpp
j00hi
Mais où mettre la macro? Pour une raison quelconque, mon VS2010 a déjà une macro "Module1" ... donc j'ai double-cliqué pour l'éditer et j'ai inséré le code de la macro dans "Public Module Module1". De là, Outils => Options => Environnement => Clavier pour configurer un raccourci dans l'éditeur de texte.
Qwertie
Excellent, testé et fonctionnel. Réponse publiée en nov. 2010 - Ça marche toujours en juillet 2012. Parfait!
rptr
1
Alex: Les macros sont globales pour Visual Studio. Ils sont enregistrés dans des "projets macro" (qui vous permettent de sauvegarder et de charger des groupes de macros) mais ceux-ci ne sont pas liés au type habituel de solution / projet, pour autant que je sache. J'ai plusieurs macros définies dans le projet de macro par défaut qui sont disponibles avant (et après) j'ouvre une solution ou un projet.
Leo Davidson
9

Essayez PhatStudio . C'est gratuit et livré avec un installeur simple.

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

  • ALT+ O= Ouvre un fichier (prend en charge la recherche instantanée par saisie, comme le menu Démarrer de Windows Vista / 7).

Tymek
la source
Merci, c'est la solution la plus simple du lot, et également gratuite.
Russell Davis
8

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

http://www.wholetomato.com/

La fonctionnalité de navigation dans le code - dont le swap header / cpp fait partie - est vraiment bonne.

(J'ai également vraiment évalué ses fonctionnalités d'intellisense et de refactoring, mais tout le monde à qui j'ai parlé n'est pas d'accord avec moi.)

EDIT: rappelez-vous simplement, le plug-in Nifty Solution le fait également - plus un autre élément de type Visual Assist, bien que rien d'autre - et ils sont gratuits:

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

(Le plugin perforce de Guy est également génial. Bien meilleur que les ordures VSSCC par défaut.)


la source
Je vais jeter un œil à Visual Assist. J'avais supposé que c'était pour les langues .NET uniquement.
Nate
5

Dans Visual Studio 2008 et 2010, vous pouvez faire un clic droit dans votre fichier .cpp et choisir Aller au fichier d'en-tête ... qui vous mènera dans une direction. Pour l'autre direction, si vous cliquez avec le bouton droit 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 autre chose, vous irez directement où vous le souhaitez. Je sais que c'est une approche en deux clics, plutôt qu'une seule touche, mais elle fait ce que vous voulez.

Kate Gregory
la source
5

Si vous placez 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 beaucoup cette fonctionnalité!


la source
5

Je ne vois pas cette réponse ici, mais au moins dans Visual Studio 2012 (Express inclus!), Vous pouvez simplement attribuer votre propre commande 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 de votre choix (Alt-S fonctionne)
  4. Profit

Je ne sais 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.

Aardvarkk
la source
Dans Visual Studio 2013, il existe une commande appelée EditorContextMenus.CodeWindow.ToggleHeaderCodeFile qui fait exactement cela, bascule entre les fichiers .h et .cpp.
Jaanus Varus
3

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

JohnO
la source
2

Pour Visual Studio 2013, comme mentionné par d'autres, c'est la commande nommée:

EditorContextMenus.CodeWindow.ToggleHeaderCodeFile

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

Appuyez sur les touches de raccourci:

sous

Outils -> Options -> Environnement -> Clavier .

Vous pouvez donc choisir une combinaison de touches personnalisées car ma préférée pour le commutateur .h à .cpp est Ctrl+ Tab.

moiJustAndrew
la source
1

L'assistance visuelle ne prend pas non plus en charge les éditions express de Visual Studio. Donc, vous êtes coincé avec la macro si vous utilisez cet IDE>

Fion
la source
0

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

Marek Szanyi
la source
8
Vous devez avoir installé Visual Assist - c'est le raccourci clavier de la commande Visual Assist.
sean e
0

Dans leur (in) sagesse finie, MS a décidé de supprimer les macros dans MSVS 2012, de sorte que la macro ci-dessus ne fonctionnera 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.

Csimbi
la source
0

Dans Visual Studio 2013, c'est ALT+O

Sagi Sulimani
la source