Abra duas instâncias de um arquivo em uma única sessão do Visual Studio

555

Eu tenho um arquivo, xyz.cpp . Quero abrir duas instâncias desse arquivo no Visual studio (BTW, estou usando o Visual Studio 2005). Por que eu iria querer fazer isso? Eu quero comparar duas seções do mesmo arquivo lado a lado. Conheço soluções alternativas, como:

  1. Faça uma cópia do arquivo. Mas o problema é que não é elegante e não quero fazer cópias toda vez que me deparo com isso.

  2. Eu posso dividir a janela em duas. O problema de dividi-lo é que eu posso dividi-lo horizontalmente. O resultado de uma divisão horizontal é que a metade direita da minha tela é espaço em branco.

Se eu conseguisse dividi-lo verticalmente ou abrir duas instâncias do mesmo arquivo, aumentaria o número de linhas de código que posso comparar.

Paragon
fonte
12
Se você quiser simplesmente comparar partes do arquivo, você pode usar o Window | Dividir que dividirá o arquivo horizontalmente a partir do meio.
vexe
@vexe Perfect. Exatamente o que eu precisava. Divide janelas, ambas editando o mesmo arquivo.
Vincent P
3
Algum motivo pelo qual você não aceitou a resposta mais votada?
cp.engr
1
@ cp.engr, do perfil dele: "Visto pela última vez em 06/12/09 às 12:41". É uma pena que usuários com alta reputação não consigam marcar respostas como aceitas.
Doctor Jones

Respostas:

904

Veja como fazê-lo ...

  1. Selecione a guia da qual você deseja duas cópias
  2. Selecione menu JanelaNova janela no menu.
  3. Clique com o botão direito do mouse na nova guia e selecione Novo Grupo de Guias Verticais

Se Nova janela não estiver listada no menu * Janela, observe que o comando existe, mesmo no Visual Studio 2017. Adicione-o ao menu Janela usando o menu FerramentasPersonalizarComandos . Nesse ponto, decida onde colocar o comando Nova Janela e selecione Adicionar Comando .

ATUALIZADO em "30 de julho de 2018"

No Visual Studio Code versão 1.25.1 e posterior

Caminho 1

Você pode simplesmente clicar com o botão esquerdo no seu arquivo no painel lateral (explorer) e pressionar Ctrl+ Enter.

Caminho 2

Simplesmente clique com o botão direito do mouse no seu arquivo no painel lateral do Visual Studio Code (explorer) e selecione a primeira opção aberta ao lado .

PaulB
fonte
50
Se você tiver algum espaço na tela disponível como um segundo monitor, também poderá arrastar a nova guia para fora do Visual Studio e vê-la, por exemplo, no segundo monitor.
Artur Carvalho
4
Você só pode fazer isso para determinados tipos de arquivo ... por exemplo, não é possível ter duas janelas abertas no mesmo arquivo .xaml. O que é uma chatice, porque é isso que eu quero fazer!
Cplotts
4
@ Shlomi.A. Tente a resposta de Lucas
Jason S
2
Para XAML no WPF, a opção Nova Janela simplesmente não está lá.
precisa saber é o seguinte
2
Este método funciona, mas no meu VS 2010 o atalho [Ctrl] [Shift] [N] foi obrigado a File> New> Project
user1556435
67

Para Visual Basic, HTML e JScript e RDL Expression, a Window > New Windowopção mencionada na resposta de PaulB está desabilitada. No entanto, uma opção pode ser alterada no Registro para ativar o item de menu.

Todos os outros idiomas não se restringem a uma única janela de código, para que você possa usar a resposta de PaulB sem editar o registro.

Habilitando Nova Janela no Registro do Windows. [ 1 ] [ 2 ]

  1. Vá para a seguinte chave do Registro. Este exemplo é para Basic (Visual Basic), mas a chave também está lá para HTML, JScript e RDL Expression.

    • SO de 64 bits: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
    • SO de 32 bits: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic
  2. Encontre o valor Single Code Window Onlye siga um destes procedimentos:

    • Defina como 0
    • Renomeie o valor
    • Exclua o valor (tenha cuidado !)

Isso ativará o item de menu "Nova janela", mas ele ainda pode não estar visível no menu.

Adicionando item de menu

Para realmente ver o item de menu Nova Janela, tive que adicioná-lo novamente ao menu:

  • Ferramentas> Personalizar ...> Comandos> Adicionar comando ...
  • Selecione 'Barra de menus' e selecione o menu 'Janela' no menu suspenso
  • Adicionar comando ...> Janela> Nova Janela> OK

Restaurando o valor do registro
Copie e cole no bloco de notas, salve como um arquivo .reg e importe o arquivo para o seu registro para restaurar a configuração inicial.

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 10.0 \ Idiomas \ Serviços de Idiomas \ Básico]
"Somente janela de código único" = dword: 00000001
Luke Hoffmann
fonte
Não é necessário editar o registro de arquivos C #, pois o item de menu 'Nova janela' já deve estar ativado para arquivos C # (no VS 2010). Você só precisa fazer isso para VB, HTML ou JScript. De acordo com este problema do MS Connect, reporte quaisquer problemas corrigidos para o VB, basta remover ou renomear a entrada do registro para ativar o recurso.
Jason S
1
Isso funciona também no Visual Basic 2010 Express, tenho prazer em informar. A chave do registro é um pouco diferente: [HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ VBExpress \ 10.0 \ Languages ​​\ Language Services \ Basic].
### evilspoons #
Não funciona para mim. Tentou reiniciar VS2010, vai dar-lhe outra chance após a reinicialização do computador ... (quem sabe como são as entradas do Registro de leitura / armazenado / atualizado)
Mars Robertson
Acabei de testar isso (acho que minha chave de registro foi substituída por atualizações ou algo assim). Não precisei de uma reinicialização. Mudei a chave com o VS2010 em execução, 'New Window' ainda acinzentado. Em seguida, feche o VS2010 e abra o VS2010 e 'New Window' está disponível.
perfil completo de Lucas Hoffmann
3
No VS2010, inverter o bit de registro do JScript permite que uma segunda guia seja aberta para um arquivo JavaScript (yay), mas nada, exceto a brancura, é renderizado em cada guia (boo).
G-Wiz
18

Abra o arquivo (se você estiver usando vários grupos de guias, verifique se o arquivo está selecionado).

Janela Menu → Dividir (alternativamente, existe este pequeno espaço logo acima da barra de rolagem vertical do editor - pegue-o e arraste-o para baixo)

Isso fornece duas visualizações (horizontais) do mesmo arquivo. Lembre-se de que qualquer ação de edição refletirá nas duas visualizações.

Quando terminar, pegue o divisor e arraste-o até o fim (ou no menu JanelaRemover divisão ).

Peter Mortensen
fonte
2
(Sri: desculpe, 'horizontal', como nas linhas das vistas ', estão alinhadas ... ou uma vista acima da outra). AFAIK, vistas verticais (lado a lado) não são possíveis.
7
Parece não ter lido OP, onde ele menciona que está ciente disso.
Jason S
17

Vá para o menuWindowsNova janela :

Digite a descrição da imagem aqui

Kishore Sahasranaman
fonte
E o prêmio nobel de melhor solução em todo o multiverso vai para você @Kishore
Sotiris Zegiannis
9

A resposta de Luke não funcionou para mim. O comando 'Nova janela' já estava listado nas configurações de personalização, mas não aparecia no menu de contexto das guias .js, apesar de excluir a configuração do registro.

Então eu usei:

Ferramentas

Customizar...

Teclado...

Role para baixo para selecionar Window.NewWindow

E pressionei e designei as teclas de atalho, Ctrl+ Shift+ W.

Isso funcionou para mim.

==== EDIT ====

Bem, 'trabalhou' era muito forte. Meu atalho de teclado realmente abre outra guia no mesmo arquivo JavaScript, mas, sem ajuda, ele não renderiza o conteúdo; é apenas uma janela branca vazia! Você pode ter melhor sorte.

dumbledad
fonte
3
Obrigado. Isso funcionou para mim no VS2012 / VB.net. Ferramentas abertas - Opções - (sob ambiente) Teclado - seleccione suspensa Visual Basic 6 de - selecione Window.NewWindow da lista de comando - ctrl pressionado + n, ctrl + w
CodingSlayer
8

Com o seu arquivo aberto, vá para a janela de comando (menu ExibirOutras JanelasJanela de Comando , ou apenas Ctrl+ Alt+ A)

Tipo:

Window.NewWindow

E depois

Window.NewVerticalTabGroup

trabalhou para mim (Visual Studio 2017).

Ou usando menus:

Janela do Menu → Nova Janela

Janela de menu → Novo grupo de torneiras verticais

Gustavo Rossi Muller
fonte
Você fez os Lordes trabalharem com isso meu filho. Obrigado.
Andrew
4

O menu Janela , Novo Grupo de Guias Horizontal / Vertical , fará, eu acho.

Anton Gogolev
fonte
3
AAII vê, você não pode abrir o mesmo arquivo em diferentes grupos de guias
Gishu
3

Ao trabalhar com o Visual Studio 2013 e o VB.NET, descobri que você pode personalizar facilmente o menu e adicionar o comando "Nova janela" - não há necessidade de mexer no registro!

Só Deus sabe por que a Microsoft escolheu não incluir o comando para alguns idiomas ...?

Mike
fonte
Trabalhou facilmente para mim! Menu Ferramentas > Personalizar . Em seguida, na guia Comandos , selecione Janela no primeiro menu suspenso, clique no botão Adicionar comando e pronto! (Visual Studio 2019)
cyberponk
3

Para versões mais recentes (como o Visual Studio 2017)

  • Selecione a janela que você deseja duplicar.
  • Vá para a guia da janela e clique em dividir no topo da lista.
  • Quando terminar, clique novamente para desativá-lo.
Peter Mortensen
fonte
3
Uma janela dividida em duas metades não é igual a duas janelas.
Tipx 18/07/19
1

Para tipos de arquivo, nos quais o mesmo arquivo não pode ser aberto em um grupo de guias vertical (por exemplo, arquivos .vb), é possível

  • Abra 2 instâncias diferentes do Visual Studio
  • Abra o mesmo arquivo em cada instância
  • Redimensione as janelas do IDE e coloque-as lado a lado para obter seu layout.

Se você salvar no disco em uma instância, precisará recarregar o arquivo quando alternar para a outra. Além disso, se você fizer edições nos dois casos, precisará resolver o segundo salvamento. O Visual Studio solicita nos dois casos várias opções. Você simplificará um pouco sua vida se editar apenas uma instância.

Gishu
fonte
@Odrade - Você pode me apontar para a resposta correta que funciona para todos os tipos de arquivos ...
Gishu
@ Jason Ok, mas ainda é incorreto afirmar que você não pode abrir o mesmo arquivo várias vezes para comparar lado a lado. Isso é claramente possível, pelo menos para arquivos .cs.
Odrade
@Odrade Você está certo. Eu editei para tentar corrigir isso. Avisando se você deseja remover comentários com base em versões anteriores.
Jason S
@Odrade Tentei a resposta de Luke É muito melhor do que abrir duas instâncias do VS para usuários do VB e tenho o meu voto positivo.
Jason S
Esta parece ser a única solução trabalhando para arquivos HTML, onde a edição de registro apenas dá uma segunda janela em branco
Chris F Carroll
1

Não tenho uma cópia do Visual Studio 2005, mas esse processo funciona no Visual Studio 2008:

  1. Abra o xyz.cpp junto com outro arquivo.
  2. Clique com o botão direito do mouse no cabeçalho da guia e selecione o novo grupo de guias verticais.
  3. Clique com o botão esquerdo no outro arquivo no primeiro grupo de guias.
  4. Abra o xyz.cpp através do Solution Explorer novamente.

Agora você deve ter duas instâncias de arquivo em grupos de guias verticais separados.

si618
fonte
No meu VS2K5 e VS2K8, apenas mostra as instâncias originais na segunda guia para mim. Isso acontece se eu clicar duas vezes no Solution Explorer, arrastar e arrastar do File Explorer ou via File | Abra o menu.
Simeon Pilgrim
@Simeon - Isso acontece se não houver outra abertura de arquivo (2ª parte do passo 1.)
si618
Ele sabe que o arquivo original é aberto no outro grupo de guias. Talvez isso esteja relacionado novamente aos arquivos que permite duplicar.
neoswf
0

Eu vim com um hack que pode produzir o resultado pretendido na resposta original.

Se você tiver o arquivo desejado em duas janelas em um controle de origem, poderá clicar com o botão direito do mouse no arquivo e selecionar comparar, poderá comparar o

Se você comparar, você terá uma nova janela Chamada diff, mostrando o conteúdo do seu arquivo.

Obviamente, isso não é ideal, pois a janela de diferenças terá as cores de diferenças poluindo o texto. Nota: você pode comparar o arquivo que deseja abrir e o arquivo vazio e, em seguida, a janela será exibida em um fundo verde muito feio.

Isso não é perfeito, é um truque, mas foi a única maneira que encontrei para realmente ter o mesmo arquivo em duas janelas.

berserck
fonte