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ć.


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 Okno → Nowe 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ędzia → Dostosuj → Polecenia . 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 .


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

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 Okno → Usuń podział ).


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,



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.


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 Widok → Inne okna → Okno 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


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ę.


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 ...?


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ć.

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.


@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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.