Откройте два экземпляра файла в одном сеансе Visual Studio


556

У меня есть файл, xyz.cpp . Я хочу открыть два экземпляра этого файла в Visual Studio (кстати, я использую Visual Studio 2005). Зачем мне это делать? Я хочу сравнить два раздела одного и того же файла рядом. Я знаю обходные пути, такие как:

  1. Сделайте копию файла. Но проблема в том, что это не элегантно, и я не хочу делать копии каждый раз, когда сталкиваюсь с этим.

  2. Я могу разбить окно на две части. Проблема с разделением, что я могу разделить только по горизонтали. Результатом горизонтального разделения является то, что правая половина моего экрана является пустым пространством.

Если бы мне удалось разделить его по вертикали или открыть два экземпляра одного и того же файла, это увеличило бы количество строк кода, которые я могу сравнить.


12
Если вы хотите просто сравнить части файла, вы можете использовать Window | Разделить, что разделит файл по горизонтали от середины.
vexe

@vexe Отлично. Именно то, что мне было нужно. Разделяет окна, оба редактируют один и тот же файл.
Винсент П

3
По какой причине вы не приняли ответ с наибольшим количеством голосов?
cp.engr

1
@ cp.engr, из его профиля: «Последний раз видели 6 декабря 2009 в 12:41». Жаль, что пользователи с большим количеством повторений не могут пометить ответы как принятые.
Доктор Джонс

Ответы:


904

Вот как это сделать ...

  1. Выберите вкладку, которую вы хотите две копии
  2. Выберите меню ОкноНовое окно из меню.
  3. Щелкните правой кнопкой мыши новую вкладку и выберите New Vertical Tab Group

Если « Новое окно» не указано в меню «Окно», обратите внимание, что команда существует, даже в Visual Studio 2017. Добавьте ее в меню « Окно» с помощью меню « Инструменты» → « Настройка» → « Команды» . В этот момент решите, куда поместить команду « Новое окно» и выберите « Добавить команду» .

ОБНОВЛЕНО "30 июля 2018 года"

В Visual Studio Code версии 1.25.1 и новее

Способ 1

Вы можете просто щелкнуть левой кнопкой мыши по файлу на боковой панели (проводнике) и нажать Ctrl+ Enter.

Способ 2

Просто щелкните правой кнопкой мыши свой файл на боковой панели кода Visual Studio (проводник) и выберите первый вариант, открытый сбоку .


50
Если у вас есть доступное пространство экрана, например, второй монитор, вы также можете перетащить новую вкладку из Visual Studio и увидеть ее, например, на втором мониторе.
Артур Карвалью

4
Вы можете сделать это только для определенных типов файлов ... например, вы не можете открыть два окна в одном и том же файле .xaml. Что облом, потому что это то, что я хочу сделать!
cplotts

4
@ Shlomi.A. Попробуйте ответ Люка
Джейсон С

2
Для XAML в WPF опция New Window просто отсутствует.
Preza8

2
Этот метод работает, но на моем VS 2010 ярлык [Ctrl] [Shift] [N] был привязан к File> New> Project
user1556435

67

Для Visual Basic, HTML, JScript и RDL Expression Window > New Windowопция, упомянутая в ответе PaulB, отключена. Однако в реестре можно изменить параметр, чтобы включить пункт меню.

Все остальные языки не ограничиваются одним окном кода, поэтому вы можете использовать ответ PaulB без редактирования реестра.

Включение нового окна в реестре Windows. [ 1 ] [ 2 ]

  1. Перейти к следующему разделу реестра. Этот пример для Basic (Visual Basic), но ключ также для HTML, JScript и RDL Expression.

    • 64-битная ОС: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
    • 32-битная ОС: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
  2. Найдите значение Single Code Window Onlyи выполните одно из следующих действий:

    • Установите 0
    • Переименовать значение
    • Удалить значение ( будьте осторожны !)

Это активирует пункт меню «Новое окно», но он все еще может не отображаться в меню.

Добавление пункта меню

Чтобы увидеть пункт меню «Новое окно», мне пришлось добавить его обратно в меню:

  • Инструменты> Настроить ...> Команды> Добавить команду ...
  • Выберите «Строка меню», выберите меню «Окно» в выпадающем меню
  • Добавить команду ...> Окно> Новое окно> ОК

Восстановление значения реестра
Скопируйте и вставьте его в блокнот, сохраните как файл .reg и импортируйте файл в реестр, чтобы восстановить первоначальные настройки.

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10.0 \ Languages ​​\ Language Services \ Basic]
«Только окно с одним кодом» = dword: 00000001

Нет необходимости редактировать реестр для файлов C #, поскольку пункт меню «Новое окно» должен быть уже включен для файлов C # (в VS 2010). Вам нужно сделать это только для VB, HTML или JScript. Согласно этому отчету о проблемах MS Connect, все проблемы с этим исправлены для VB, вам просто нужно удалить или переименовать запись реестра, чтобы включить эту функцию.
Джейсон С

1
Это работает и в Visual Basic 2010 Express, и я рад сообщить. Раздел реестра немного отличается: [HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VBExpress \ 10.0 \ Languages ​​\ Language Services \ Basic].
злые ложки

Не работает для меня Попытка перезагрузки VS2010, даст ему еще один шанс после перезагрузки компьютера ... (кто знает, как записи реестра хранятся / обновляются / сохраняются / обновляются)
Марс Робертсон,

Я только что проверил это (я думаю, мой ключ реестра был перезаписан обновлениями или что-то). Мне не потребовалась перезагрузка. Я сменил ключ при работающем VS2010, «Новое окно» все еще серое. Затем закрыли VS2010 и открыли VS2010, и «Новое окно» доступно.
Люк Хоффманн

3
В VS2010 переключение регистрационного бита для JScript позволяет открыть вторую вкладку для файла JavaScript (yay), но на каждой вкладке не отображается ничего, кроме белизны (boo).
G-Wiz

18

Откройте файл (если вы используете несколько групп вкладок, убедитесь, что ваш файл выбран).

Окно меню → Разделить (поочередно этот крошечный кусок чуть выше вертикальной полосы прокрутки редактора - возьмите его и перетащите вниз)

Это дает вам два (горизонтальных) просмотра одного и того же файла. Помните, что любые действия редактирования отразятся на обоих представлениях.

Как только вы закончите, возьмите разделитель и перетащите его полностью (или меню ОкноУдалить разделение ).


2
(Шри: извините, горизонтальные, как в представлениях строки выровнены ... или один вид над другим). AFAIK, вертикальные (бок о бок) виды невозможны.

7
Кажется, не читал OP, где он упоминает, что знает об этой самой вещи.
Джейсон С



9

Ответ Люка не сработал для меня. Команда «Новое окно» уже была указана в настройке параметров, но не отображалась в контекстном меню вкладок .js, несмотря на удаление параметра реестра.

Поэтому я использовал:

инструменты

Настроить ...

Клавиатура ...

Прокрутите вниз, чтобы выбрать Window.NewWindow

И я нажал и назначил сочетания клавиш, Ctrl+ Shift+ W.

Это сработало для меня.

==== РЕДАКТИРОВАТЬ ====

Ну, «работал» был слишком силен. Мой ярлык на клавиатуре действительно открывает другую вкладку в том же файле JavaScript, но, скорее всего, он не отображает содержимое; это просто пустое белое окно! Возможно, вам повезет больше.


3
Спасибо. Это работало для меня для VS2012 / VB.net. Открытые Инструменты - опции - (под средой) клавиатура - выберите Visual Basic 6 из выпадающего списка - выберите Window.NewWindow из списка команд - нажмите Ctrl + N, Ctrl + W
CodingSlayer

8

Открыв файл, перейдите в командное окно (меню « Вид» → « Другие окна» → « Командное окно» или просто Ctrl+ Alt+ A).

Тип:

Window.NewWindow

А потом

Window.NewVerticalTabGroup

работал для меня (Visual Studio 2017).

Или используя меню:

Окно меню → Новое окно

Окно меню → Новая вертикальная группа нажатий


Ты сделал, чтобы лорды работали с этим, сын мой. Спасибо.
Андрей

4

Окно меню, Новая Горизонтальная / Вертикальная группа вкладок там подойдет, я думаю.


3
AFAI, видите, вы не можете открыть один и тот же файл в разных группах вкладок
Gishu

3

При работе с Visual Studio 2013 и VB.NET я обнаружил, что вы можете довольно легко настроить меню и добавить команду «Новое окно» - нет необходимости возиться с реестром!

Только Бог знает, почему Microsoft решила не включать команду для некоторых языков ...?


Работал легко для меня! Меню Инструменты > Настройка . Затем на вкладке « Команды » выберите « Окно» в первом раскрывающемся списке, затем нажмите кнопку « Добавить команду» и вуаля! (Visual Studio 2019)
киберпонк

3

Для более новых версий (таких как Visual Studio 2017)

  • Выберите окно, которое вы хотите дублировать.
  • Перейдите на вкладку окна и нажмите на разделить в верхней части списка.
  • Когда вы закончите, щелкните по нему еще раз, чтобы отключить его.

3
Окно, разделенное на две половины, отличается от двух окон.
Tipx

1

Для типов файлов, где один и тот же файл не может быть открыт в вертикальной группе вкладок (например, файлы .vb), вы можете

  • Откройте 2 разных экземпляра Visual Studio
  • Откройте один и тот же файл в каждом экземпляре
  • Измените размеры окон IDE и разместите их рядом, чтобы добиться макета.

Если вы сохраните на диск в одном случае, вам придется перезагрузить файл при переключении на другой. Кроме того, если вы вносите изменения в обоих случаях, вам придется разрешить второе сохранение. Visual Studio предложит вам в обоих случаях различные варианты. Вы немного упростите свою жизнь, если будете редактировать только один экземпляр.


@Odrade - Можете ли вы указать мне правильный ответ, который работает для всех типов файлов ...
Gishu

@Jason Хорошо, но все равно неверно утверждать, что вы не можете открыть один и тот же файл несколько раз для параллельного сравнения. Это вполне возможно, по крайней мере, для файлов .cs.
Одраде

@Odrade Вы правы. Я редактировал, чтобы попытаться исправить это. Сообщаем вам, если вы хотите удалить комментарии на основе предыдущих версий.
Джейсон С

@Odrade Попробовал ответить Люку. Это гораздо лучше, чем открыть два экземпляра VS для пользователей VB, и у меня есть повышенный голос.
Джейсон С

Это кажется единственным работающим обходным путем для html-файлов, где редактирование реестра просто дает пустое второе окно
Крис Ф. Кэрролл,

1

У меня нет копии Visual Studio 2005, но этот процесс работает в Visual Studio 2008:

  1. Откройте xyz.cpp вместе с другим файлом.
  2. Щелкните правой кнопкой мыши заголовок вкладки и выберите новую вертикальную группу вкладок.
  3. Щелкните левой кнопкой мыши по этому другому файлу в первой группе вкладок.
  4. Снова откройте xyz.cpp через обозреватель решений.

Теперь у вас должно быть два экземпляра файла в отдельных вертикальных группах вкладок.


На моем VS2K5 и VS2K8 он просто показывает оригинальные экземпляры во второй вкладке для меня. Это если я дважды щелкну в Обозревателе решений, перетащить из Проводника или через Файл | Открытое меню.
Симеон Пилигрим

@Simeon - это происходит, если нет другого открытого файла (2-я часть шага 1.)
si618,

Он знает, что исходный файл открыт в другой группе вкладок. Может быть, это снова относится к файлам, которые он разрешает дублировать.
neoswf

0

Я придумал хак, который может дать результат, намеченный в первоначальном ответе.

Если у вас есть файл, который вы хотите в двух окнах в элементе управления источником, вы можете щелкнуть правой кнопкой мыши по файлу и выбрать сравнить, вы можете сравнить

Если вы сравните, у вас появится новое окно с именем diff, показывающее содержимое вашего файла.

Это, конечно, не идеально, так как в окне diff будут цвета diff, загрязняющие текст. Примечание: вы можете сравнить файл, который вы хотите открыть, и пустой файл, и тогда у вас будет окно на очень уродливом зеленом фоне.

Это не идеально, это взлом, но я обнаружил, что это единственный способ иметь один и тот же файл в двух окнах.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.