Ouvrez deux instances d'un fichier dans une seule session Visual Studio

555

J'ai un fichier, xyz.cpp . Je souhaite ouvrir deux instances de ce fichier dans Visual studio (BTW, j'utilise Visual Studio 2005). Pourquoi voudrais-je le faire? Je veux comparer deux sections du même fichier côte à côte. Je connais des solutions de contournement telles que:

  1. Faites une copie du fichier. Mais le problème est que ce n'est pas élégant, et je ne veux pas faire de copies chaque fois que je suis confronté à cela.

  2. Je peux diviser la fenêtre en deux. Le problème avec le diviser, c'est que je ne peux le diviser que horizontalement. Le résultat d'une division horizontale est que la moitié droite de mon écran est un espace blanc.

Si je pouvais le diviser verticalement ou ouvrir deux instances du même fichier, cela augmenterait le nombre de lignes de code que je peux comparer.

Parangon
la source
12
Si vous voulez simplement comparer simplement des parties du fichier, vous pouvez utiliser Window | Split qui divisera le fichier horizontalement à partir du milieu.
vexe
@vexe Perfect. Exactement ce dont j'avais besoin. Fractionne les fenêtres, les deux éditant le même fichier.
Vincent P
3
Une raison pour laquelle vous n'avez pas accepté la réponse la plus votée?
cp.engr
1
@ cp.engr, à partir de son profil: "Vu pour la dernière fois le 6 décembre 2009 à 12h41". Il est dommage que les utilisateurs de haute réputation ne puissent pas marquer les réponses comme acceptées.
Docteur Jones

Réponses:

904

Voici comment procéder ...

  1. Sélectionnez l'onglet dont vous souhaitez deux copies
  2. Sélectionnez le menu FenêtreNouvelle fenêtre dans le menu.
  3. Cliquez avec le bouton droit sur le nouvel onglet et sélectionnez Nouveau groupe d'onglets verticaux

Si Nouvelle fenêtre n'est pas répertoriée dans le menu * Fenêtre, notez que la commande existe, même à partir de Visual Studio 2017. Ajoutez-la au menu Fenêtre à l' aide du menu OutilsPersonnaliserCommandes . À ce stade, décidez où placer la commande Nouvelle fenêtre et sélectionnez Ajouter une commande .

MIS À JOUR le "30 juillet 2018"

Dans Visual Studio Code version 1.25.1 et versions ultérieures

Voie 1

Vous pouvez simplement faire un clic gauche sur votre fichier dans le panneau latéral (explorateur) et appuyer sur Ctrl+ Enter.

Voie 2

Faites simplement un clic droit sur votre fichier dans le panneau latéral Visual Studio Code (explorateur) et sélectionnez la première option ouverte sur le côté .

PaulB
la source
50
Si vous disposez d'un espace d'écran comme un deuxième moniteur, vous pouvez également faire glisser le nouvel onglet hors de Visual Studio et le voir, par exemple, dans le deuxième moniteur.
Artur Carvalho
4
Vous ne pouvez le faire que pour certains types de fichiers ... par exemple, vous ne pouvez pas avoir deux fenêtres ouvertes sur le même fichier .xaml. Ce qui est une déception, car c'est ce que je veux faire!
cplotts
4
@ Shlomi.A. Essayez la réponse de Luke
Jason S
2
Pour XAML dans WPF, l'option Nouvelle fenêtre n'existe tout simplement pas.
Preza8
2
Cette méthode fonctionne, mais sur mon VS 2010, le raccourci [Ctrl] [Maj] [N] était lié à Fichier> Nouveau> Projet
user1556435
67

Pour Visual Basic, HTML et JScript et Expression RDL, l' Window > New Windowoption mentionnée dans la réponse de PaulB est désactivée. Cependant, une option peut être modifiée dans le Registre pour activer l'élément de menu.

Toutes les autres langues ne se limitent pas à une seule fenêtre de code, vous pouvez donc utiliser la réponse de PaulB sans modifier le registre.

Activation d'une nouvelle fenêtre dans le registre Windows. [ 1 ] [ 2 ]

  1. Accédez à la clé de registre suivante. Cet exemple concerne Basic (Visual Basic), mais la clé existe également pour HTML, JScript et RDL Expression.

    • Système d'exploitation 64 bits: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
    • Système d'exploitation 32 bits: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
  2. Recherchez la valeur Single Code Window Onlyet effectuez l'une des opérations suivantes:

    • Réglez-le sur 0
    • Renommez la valeur
    • Supprimez la valeur ( soyez prudent !)

Cela activera l'élément de menu "Nouvelle fenêtre", mais il peut ne pas toujours être visible dans le menu.

Ajout d'un élément de menu

Pour voir réellement l'élément de menu Nouvelle fenêtre, j'ai dû l'ajouter à nouveau dans le menu:

  • Outils> Personnaliser ...> Commandes> Ajouter une commande ...
  • Sélectionnez «Barre de menus», sélectionnez le menu «Fenêtre» dans la liste déroulante
  • Ajouter une commande ...> Fenêtre> Nouvelle fenêtre> OK

Restauration de la valeur du registre
Copiez-collez ceci dans le bloc-notes, enregistrez-le en tant que fichier .reg et importez le fichier dans votre registre pour restaurer le paramètre initial.

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10.0 \ Languages ​​\ Language Services \ Basic]
"Fenêtre de code unique uniquement" = dword: 00000001
Luke Hoffmann
la source
Pas besoin de modifier le registre pour les fichiers C # car l'élément de menu 'Nouvelle fenêtre' devrait être déjà activé pour les fichiers C # (dans VS 2010). Vous n'avez besoin de le faire que pour VB, HTML ou JScript. Selon ce rapport de problème MS Connect, tout problème résolu pour VB, il vous suffit de supprimer ou de renommer l'entrée de registre pour activer la fonctionnalité.
Jason S
1
Cela fonctionne également dans Visual Basic 2010 Express, je suis heureux de signaler. La clé de registre est légèrement différente: [HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VBExpress \ 10.0 \ Languages ​​\ Language Services \ Basic].
evilspoons
Ça ne marche pas pour moi. J'ai essayé de redémarrer VS2010, cela lui donnera une autre chance après le redémarrage de l'ordinateur ... (qui sait comment les entrées de registre sont lues / stockées / mises à jour)
Mars Robertson
Je viens de tester cela (je suppose que ma clé de registre a été remplacée par des mises à jour ou quelque chose). Je n'ai pas eu besoin d'un redémarrage. J'ai changé la clé avec VS2010 en cours d'exécution, «Nouvelle fenêtre» toujours grisée. Puis fermé VS2010 et ouvert VS2010 et «Nouvelle fenêtre» est disponible.
Luke Hoffmann
3
Dans VS2010, le retournement du bit de registre pour JScript permet d'ouvrir un deuxième onglet pour un fichier JavaScript (yay), mais rien sauf la blancheur n'est rendu dans chaque onglet (boo).
G-Wiz
18

Ouvrez le fichier (si vous utilisez plusieurs groupes d'onglets, assurez-vous que votre fichier est sélectionné).

Fenêtre de menu → Fractionner (alternativement, il y a ce petit nœud juste au-dessus de la barre de défilement verticale de l'éditeur - saisissez-la et faites-la glisser vers le bas)

Cela vous donne deux vues (horizontales) du même fichier. Attention, toute action d'édition se reflétera sur les deux vues.

Une fois que vous avez terminé, saisissez le séparateur et faites-le glisser complètement (ou dans le menu FenêtreSupprimer le fractionnement ).

Peter Mortensen
la source
2
(Sri: désolé, les lignes "horizontales" comme dans les vues sont alignées ... ou une vue au-dessus de l'autre). AFAIK, les vues verticales (côte à côte) ne sont pas possibles.
7
Semble ne pas avoir lu OP, où il mentionne qu'il est au courant de cette chose même.
Jason S
17

Allez dans le menuWindowsNouvelle fenêtre :

Entrez la description de l'image ici

Kishore Sahasranaman
la source
Et le prix Nobel de la meilleure solution dans l'ensemble du multivers vous revient @Kishore
Sotiris Zegiannis
9

La réponse de Luke n'a pas fonctionné pour moi. La commande «Nouvelle fenêtre» était déjà répertoriée dans les paramètres de personnalisation, mais n'apparaissait pas dans le menu contextuel des onglets .js, malgré la suppression du paramètre de registre.

J'ai donc utilisé:

Outils

Personnaliser...

Clavier...

Faites défiler vers le bas pour sélectionner Fenêtre.

Et j'ai appuyé et attribué les touches de raccourci, Ctrl+ Shift+ W.

Cela a fonctionné pour moi.

==== EDIT ====

Eh bien, «travaillé» était trop fort. Mon raccourci clavier ouvre en effet un autre onglet sur le même fichier JavaScript, mais plutôt inutilement, il ne rend pas le contenu; c'est juste une fenêtre blanche vide! Vous aurez peut-être plus de chance.

dumbledad
la source
3
Merci. Cela a fonctionné pour moi pour VS2012 / VB.net. Outils ouverts - options - (sous environnement) clavier - sélectionnez visual basic 6 dans la liste déroulante - sélectionnez Window.NewWindow dans la liste des commandes - appuyez sur ctrl + n, ctrl + w
CodingSlayer
8

Avec votre fichier ouvert, allez dans la fenêtre de commande (menu AffichageAutres fenêtresFenêtre de commande , ou simplement Ctrl+ Alt+ A)

Type:

Window.NewWindow

Et alors

Window.NewVerticalTabGroup

travaillé pour moi (Visual Studio 2017).

Ou en utilisant des menus:

Fenêtre de menu → Nouvelle fenêtre

Fenêtre de menu → Nouveau groupe de prises verticales

Gustavo Rossi Muller
la source
Vous avez fait travailler les Lords avec ce mon fils. Je vous remercie.
Andrew
4

Menu Fenêtre , Nouveau groupe d'onglets horizontal / vertical fera l'affaire, je pense.

Anton Gogolev
la source
3
AFAI voyez, vous ne pouvez pas ouvrir le même fichier dans différents groupes d'onglets
Gishu
3

En travaillant avec Visual Studio 2013 et VB.NET, j'ai constaté que vous pouvez assez facilement personnaliser le menu et ajouter la commande "Nouvelle fenêtre" - il n'est pas nécessaire de jouer avec le registre!

Dieu sait seulement pourquoi Microsoft a choisi de ne pas inclure la commande pour certaines langues ...?

Mike
la source
A fonctionné facilement pour moi! Outils de menu > Personnaliser . Ensuite, dans l' onglet Commandes , sélectionnez Fenêtre dans la première liste déroulante, puis cliquez sur le bouton Ajouter une commande et voilà! (Visual Studio 2019)
cyberponk
3

Pour les versions plus récentes (telles que Visual Studio 2017)

  • Sélectionnez la fenêtre que vous souhaitez dupliquer.
  • Accédez à l'onglet de la fenêtre et cliquez sur fractionner en haut de la liste.
  • Lorsque vous avez terminé, cliquez à nouveau dessus pour le désactiver.
Peter Mortensen
la source
3
Une fenêtre divisée en deux moitiés n'est pas la même chose que deux fenêtres.
Tipx
1

Pour les types de fichiers, où le même fichier ne peut pas être ouvert dans un groupe d'onglets vertical (par exemple les fichiers .vb), vous pouvez

  • Ouvrez 2 instances différentes de Visual Studio
  • Ouvrez le même fichier dans chaque instance
  • Redimensionnez les fenêtres IDE et placez-les côte à côte pour réaliser votre mise en page.

Si vous enregistrez sur le disque dans une instance, vous devrez recharger le fichier lorsque vous passez à l'autre. De plus, si vous apportez des modifications dans les deux cas, vous devrez résoudre le deuxième enregistrement. Visual Studio vous invite dans les deux cas avec différentes options. Vous simplifierez un peu la vie si vous modifiez uniquement dans une seule instance.

Gishu
la source
@Odrade - Pouvez-vous m'indiquer la bonne réponse qui fonctionne pour tous les types de fichiers ...
Gishu
@ Jason Ok, mais il est toujours incorrect de dire que vous ne pouvez pas ouvrir plusieurs fois le même fichier pour effectuer une comparaison côte à côte. C'est clairement possible, au moins pour les fichiers .cs.
Odrade
@Odrade Vous avez raison. J'ai édité pour essayer de corriger cela. Vous informer si vous souhaitez supprimer des commentaires basés sur des versions précédentes.
Jason S
@Odrade J'ai essayé de répondre à Luke C'est bien mieux que d'ouvrir deux instances de VS pour les utilisateurs VB et j'ai mon vote positif.
Jason S
Cela semble la seule solution de contournement pour les fichiers html, où la modification du registre ne donne qu'une deuxième fenêtre vide
Chris F Carroll
1

Je n'ai pas de copie de Visual Studio 2005, mais ce processus fonctionne sur Visual Studio 2008:

  1. Ouvrez xyz.cpp avec un autre fichier.
  2. Cliquez avec le bouton droit sur l'en-tête de l'onglet et sélectionnez un nouveau groupe d'onglets vertical.
  3. Faites un clic gauche sur cet autre fichier dans le premier groupe d'onglets.
  4. Ouvrez à nouveau xyz.cpp via l'explorateur de solutions.

Vous devriez maintenant avoir deux instances de fichier dans des groupes d'onglets verticaux séparés.

si618
la source
Sur mes VS2K5 et VS2K8, cela montre juste les instances originales dans le deuxième onglet pour moi. C'est si je double-clique dans l'Explorateur de solutions, Drag'n'drop depuis l'Explorateur de fichiers ou via Fichier | Ouvrez le menu.
Simeon Pilgrim
@Simeon - Cela se produit s'il n'y a pas d'autre fichier ouvert (2e partie de l'étape 1.)
si618
Il sait que le fichier d'origine est ouvert dans l'autre groupe d'onglets. Peut-être que cela concerne à nouveau les fichiers qu'il permet de dupliquer.
neoswf
0

J'ai trouvé un hack qui pourrait produire le résultat prévu dans la réponse originale.

Si vous avez le fichier que vous voulez dans deux fenêtres dans un contrôle de source, vous pouvez cliquer avec le bouton droit sur le fichier et sélectionner comparer, vous pouvez comparer le

Si vous comparez, vous aurez une nouvelle fenêtre appelée diff, vous montrant le contenu de votre fichier.

Ce n'est bien sûr pas idéal car la fenêtre diff aura les couleurs diff polluant le texte. Remarque: vous pouvez comparer le fichier que vous souhaitez ouvrir et le fichier vide, puis vous aurez la fenêtre sur un fond vert très laid.

Ce n'est pas parfait, c'est un hack, mais c'était le seul moyen que j'ai trouvé d'avoir vraiment le même fichier dans deux fenêtres.

berserck
la source