Otwórz dwie instancje pliku w jednej sesji Visual Studio

554

Mam plik xyz.cpp . Chcę otworzyć dwie instancje tego pliku w Visual Studio (BTW, używam Visual Studio 2005). Dlaczego miałbym to zrobić? Chcę porównać dwie sekcje tego samego pliku obok siebie. Znam obejścia takie jak:

  1. Zrób kopię pliku. Problem polega jednak na tym, że nie jest elegancki i nie chcę robić kopii za każdym razem, gdy mam do czynienia z tym.

  2. Mogę podzielić okno na dwie części. Problem z podziałem, że mogę podzielić tylko poziomo. Rezultatem podziału poziomego jest to, że prawa połowa mojego ekranu to biała przestrzeń.

Gdybym był w stanie podzielić go w pionie lub otworzyć dwa wystąpienia tego samego pliku, zwiększyłoby to liczbę wierszy kodu, które mogę porównać.

Wzór doskonałości
źródło
12
Jeśli chcesz po prostu porównać części pliku, możesz użyć Window | Podziel, który podzieli plik poziomo od środka.
vexe
@vexe Perfect. Dokładnie to, czego potrzebowałem. Dzieli okna, zarówno edytując ten sam plik.
Vincent P
3
Czy jest jakiś powód, dla którego nie zaakceptowałeś najlepiej głosowanej odpowiedzi?
cp.engr
1
@ cp.engr, z jego profilu: „Ostatni raz 6 grudnia 09 o 12:41”. Szkoda, że ​​użytkownicy o wysokich przedstawicielach nie mogą oznaczać odpowiedzi jako zaakceptowanych.
Doktor Jones

Odpowiedzi:

903

Oto jak to zrobić ...

  1. Wybierz kartę, której chcesz dwie kopie
  2. Wybierz menu OknoNowe okno z menu.
  3. Kliknij nową kartę prawym przyciskiem myszy i wybierz Nowa pionowa grupa kart

Jeśli Nowe okno nie jest wymienione w menu * Okno, zauważ, że polecenie istnieje, nawet począwszy od Visual Studio 2017. Dodaj je do menu Okno za pomocą menu NarzędziaDostosujPolecenia . W tym momencie zdecyduj, gdzie umieścić polecenie Nowe okno i wybierz Dodaj polecenie .

AKTUALIZACJA „30 lipca 2018 r.”

W Visual Studio Code w wersji 1.25.1 i nowszych

Sposób 1

Możesz po prostu kliknąć lewym przyciskiem myszy plik na panelu bocznym (eksplorator) i nacisnąć Ctrl+ Enter.

Sposób 2

Po prostu kliknij prawym przyciskiem myszy plik na panelu bocznym programu Visual Studio Code (eksplorator) i wybierz pierwszą opcję otwartą z boku .

PaulB
źródło
50
Jeśli masz trochę miejsca na ekranie, takiego jak drugi monitor, możesz również przeciągnąć nową kartę poza Visual Studio i zobaczyć ją na przykład na drugim monitorze.
Artur Carvalho,
4
Możesz to zrobić tylko dla niektórych typów plików ... na przykład nie możesz mieć dwóch okien otwartych dla tego samego pliku .xaml. Co jest kłopotliwe, bo to właśnie chcę zrobić!
cplotts
4
@ Shlomi.A. Spróbuj odpowiedzi Łukasza
Jason S,
2
W przypadku XAML w WPF opcja Nowe okno po prostu nie istnieje.
Preza8
2
Ta metoda działa, ale w moim VS 2010 skrót [Ctrl] [Shift] [N] został
przypisany
67

W przypadku Visual Basic, HTML oraz JScript i RDL Expression Window > New Windowopcja wymieniona w odpowiedzi PaulB jest wyłączona. Jednak w rejestrze można zmienić opcję, aby włączyć pozycję menu.

Wszystkie pozostałe języki nie ograniczają się do jednego okna kodu, dzięki czemu można użyć odpowiedzi PaulB bez edytowania rejestru.

Włączanie nowego okna w rejestrze systemu Windows. [ 1 ] [ 2 ]

  1. Przejdź do następującego klucza rejestru. Ten przykład dotyczy Basic (Visual Basic), ale kluczem jest także HTML, JScript i RDL Expression.

    • 64-bitowy system operacyjny: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
    • 32-bitowy system operacyjny: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
  2. Znajdź wartość Single Code Window Onlyi wykonaj jedną z następujących czynności:

    • Ustaw na 0
    • Zmień nazwę wartości
    • Usuń wartość ( zachowaj ostrożność !)

Spowoduje to włączenie elementu menu „Nowe okno”, ale nadal może nie być widoczny w menu.

Dodawanie pozycji menu

Aby faktycznie zobaczyć element menu Nowe okno musiałem dodać go z powrotem do menu:

  • Narzędzia> Dostosuj ...> Polecenia> Dodaj polecenie ...
  • Wybierz „Pasek menu”, wybierz menu „Okno” z menu rozwijanego
  • Dodaj polecenie ...> Okno> Nowe okno> OK

Przywracanie wartości rejestru
Skopiuj to do notatnika, zapisz jako plik .reg i zaimportuj plik do rejestru, aby przywrócić ustawienie początkowe.

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10.0 \ Languages ​​\ Language Services \ Basic]
„Tylko okno z jednym kodem” = dword: 00000001
Luke Hoffmann
źródło
Nie trzeba edytować rejestru plików C #, ponieważ pozycja menu „Nowe okno” powinna być już włączona dla plików C # (w VS 2010). Musisz to zrobić tylko w przypadku VB, HTML lub JScript. Zgodnie z tym zgłoszeniem problemu MS Connect wszelkie problemy z tym są naprawione dla VB, wystarczy usunąć wpis rejestru lub zmienić jego nazwę, aby włączyć tę funkcję.
Jason S
1
Działa to również w Visual Basic 2010 Express, z przyjemnością informuję. Klucz rejestru jest nieco inny: [HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VBExpress \ 10.0 \ Languages ​​\ Language Services \ Basic].
evilspoons
Nie działa dla mnie. Próbowałem zrestartować VS2010, da mu kolejną szansę po ponownym uruchomieniu komputera ... (kto wie, w jaki sposób wpisy rejestru są odczytywane / przechowywane / aktualizowane)
Mars Robertson
Właśnie to przetestowałem (chyba mój klucz rejestru został nadpisany przez aktualizacje lub coś w tym rodzaju). Nie wymagałem restartu. Zmieniłem klucz przy uruchomionym VS2010, „Nowe okno” nadal było wyszarzone. Następnie zamknięte VS2010 i otwarte VS2010 i dostępne jest „Nowe okno”.
Luke Hoffmann
3
W VS2010 przerzucenie bitu rejestru dla JScript pozwala na otwarcie drugiej zakładki dla pliku JavaScript (tak), ale na każdej zakładce (boo) nie jest renderowane nic oprócz bieli.
G-Wiz,
18

Otwórz plik (jeśli używasz wielu grup kart, upewnij się, że plik jest zaznaczony).

Okno menu → Podziel (na przemian, ten niewielki fragment znajduje się tuż nad pionowym paskiem przewijania edytora - chwyć go i przeciągnij w dół)

To daje dwa (poziome) widoki tego samego pliku. Uwaga: wszelkie działania edycyjne będą odzwierciedlać oba widoki.

Po zakończeniu chwyć rozdzielacz i przeciągnij go do góry (lub menu OknoUsuń podział ).

Peter Mortensen
źródło
2
(Sri: przepraszam, „poziome”, jak w rzędach widoków są wyrównane ... lub jeden widok nad drugim). AFAIK, widoki pionowe (obok siebie) nie są możliwe.
7
Wydaje się, że nie czytał OP, gdzie wspomina, że ​​jest tego świadomy.
Jason S,
17

Przejdź do menuWindowsNowe okno :

Wpisz opis zdjęcia tutaj

Kishore Sahasranaman
źródło
I nagroda Nobla za najlepsze rozwiązanie w całym multiwersie trafia do Ciebie @Kishore
Sotiris Zegiannis
9

Odpowiedź Luke'a nie zadziałała dla mnie. Polecenie „Nowe okno” było już wymienione w ustawieniach dostosowywania, ale nie wyświetla się w menu kontekstowym kart .js, pomimo usunięcia ustawienia rejestru.

Więc użyłem:

Przybory

Dostosuj ...

Klawiatura...

Przewiń w dół, aby wybrać Window.NewWindow

I nacisnąłem i przypisałem klawisze skrótu, Ctrl+ Shift+ W.

To działało dla mnie.

==== EDYCJA ====

Cóż, „pracował” był zbyt silny. Mój skrót klawiaturowy rzeczywiście otwiera inną kartę w tym samym pliku JavaScript, ale raczej nieprzydatnie nie wyświetla zawartości; to tylko puste białe okno! Możesz mieć więcej szczęścia.

dumbledad
źródło
3
Dzięki. To działało dla mnie dla VS2012 / VB.net. Otwarte narzędzia - opcje - klawiatura (w środowisku) - wybierz Visual Basic 6 z menu rozwijanego - wybierz Window.NewWindow z listy poleceń - naciśnij Ctrl + n, Ctrl + W
CodingSlayer
8

Po otwarciu pliku przejdź do okna poleceń (menu WidokInne oknaOkno poleceń lub po prostu Ctrl+ Alt+ A)

Rodzaj:

Window.NewWindow

I wtedy

Window.NewVerticalTabGroup

pracował dla mnie (Visual Studio 2017).

Lub za pomocą menu:

Okno menu → Nowe okno

Okno menu → Nowa pionowa grupa kranów

Gustavo Rossi Muller
źródło
Sprawiłeś, że Lordowie pracowali z tym moim synem. Dziękuję Ci.
Andrew
4

Menu okna , Nowa pozioma / pionowa grupa kart zrobi, tak myślę.

Anton Gogolev
źródło
3
AFAI widzicie, nie można otworzyć tego samego pliku w różnych grupach kart
Gishu,
3

Podczas pracy z Visual Studio 2013 i VB.NET odkryłem, że można dość łatwo dostosować menu i dodać polecenie „Nowe okno” - nie ma potrzeby bałagania w rejestrze!

Bóg wie tylko, dlaczego Microsoft zdecydował się nie dołączać polecenia dla niektórych języków ...?

mikrofon
źródło
Z łatwością pracował dla mnie! Narzędzia menu > Dostosuj . Następnie na karcie Polecenia wybierz opcję Okno w pierwszym menu rozwijanym, a następnie kliknij przycisk Dodaj polecenie polecenia i voilà! (Visual Studio 2019)
cyberponk
3

Dla nowszych wersji (takich jak Visual Studio 2017)

  • Wybierz okno, które chcesz powielić.
  • Przejdź do zakładki okna i kliknij split u góry listy.
  • Po zakończeniu kliknij ponownie, aby ją wyłączyć.
Peter Mortensen
źródło
3
Okno podzielone na dwie połówki to nie to samo co dwa okna.
Tipx
1

W przypadku typów plików, w których nie można otworzyć tego samego pliku w pionowej grupie kart (na przykład pliki .vb), możesz

  • Otwórz 2 różne instancje Visual Studio
  • Otwórz ten sam plik w każdej instancji
  • Zmień rozmiar okien IDE i umieść je obok siebie, aby uzyskać układ.

Jeśli jednak zapiszesz na dysku w jednej instancji, będziesz musiał ponownie załadować plik po przełączeniu na drugą. Również jeśli wprowadzisz zmiany w obu instancjach, będziesz musiał rozwiązać problem przy drugim zapisie. W obu przypadkach program Visual Studio wyświetla różne opcje. Uprościsz trochę swoje życie, jeśli edytujesz tylko w jednym przypadku.

Gishu
źródło
@Odrade - Czy możesz wskazać mi prawidłową odpowiedź, która działa dla wszystkich typów plików ...
Gishu
@Jason Ok, ale nadal niepoprawne jest stwierdzenie, że nie można otworzyć tego samego pliku wiele razy w celu porównania. Jest to wyraźnie możliwe, przynajmniej w przypadku plików .cs.
Odrade,
@Odrade Masz rację. Zredagowałem, aby spróbować to naprawić. Powiadomienie, jeśli chcesz usunąć komentarze na podstawie poprzednich wersji.
Jason S
@Odrade Próbowałem odpowiedzieć na Luke'a. Jest to o wiele lepsze niż otwarcie dwóch instancji VS dla użytkowników VB i ma moje poparcie.
Jason S
To wydaje się jedynym działającym obejściem dla plików HTML, w których edycja rejestru daje tylko puste drugie okno
Chris F Carroll
1

Nie mam kopii programu Visual Studio 2005, ale ten proces działa w programie Visual Studio 2008:

  1. Otwórz xyz.cpp wraz z innym plikiem.
  2. Kliknij prawym przyciskiem myszy nagłówek karty i wybierz nową pionową grupę kart.
  3. Kliknij lewym przyciskiem myszy ten inny plik w pierwszej grupie kart.
  4. Otwórz xyz.cpp ponownie za pomocą eksploratora rozwiązań.

Powinieneś teraz mieć dwa wystąpienia pliku w osobnych pionowych grupach kart.

si618
źródło
Na moim VS2K5 i VS2K8 pokazuje mi tylko oryginalne wystąpienia w drugiej zakładce. Dzieje się tak, jeśli kliknę dwukrotnie w Eksploratorze rozwiązań, przeciągnij i upuść z Eksploratora plików lub przez Plik | Otwórz menu.
Simeon Pilgrim
@Simeon - Dzieje się tak, jeśli nie jest otwarty żaden inny plik (2. część kroku 1.)
si618,
Wie, że oryginalny plik jest otwarty w innej grupie kart. Być może odnosi się to ponownie do plików, które pozwala na duplikowanie.
neoswf 30.03.11
0

Wymyśliłem hack, który może dać wynik zgodny z pierwotną odpowiedzią.

Jeśli masz plik, który chcesz w dwóch oknach w kontrolce źródła, możesz kliknąć plik prawym przyciskiem myszy i wybrać porównać, możesz porównać

Jeśli porównasz, pojawi się nowe okno o nazwie diff, pokazujące zawartość twojego pliku.

Nie jest to oczywiście idealne, ponieważ okno różnic będzie miało kolory różnic zanieczyszczające tekst. Uwaga: możesz porównać plik, który chcesz otworzyć, i pusty plik, a wtedy okno będzie mieć bardzo brzydkie zielone tło.

To nie jest idealne, to hack, ale to był jedyny sposób, w jaki naprawdę miałem ten sam plik w dwóch oknach.

berserck
źródło