Existe um atalho para mover entre o cabeçalho e o arquivo de origem no VC ++?

112

Este é um recurso com o qual me acostumei no Eclipse ( Ctrl+ Tab). Existe um equivalente no Visual C ++?

JeffV
fonte
Veja também esta questão
idbrii
@ LưuVĩnhPhúc Quando você estiver em um cabeçalho ou código-fonte no Eclipse, pressione Alt-Tab e o Eclipse deve alternar entre a origem e o cabeçalho, presumindo que o projeto esteja indexado corretamente.
MrMas de

Respostas:

138

No Visual Studio 2013 e posterior, há um atalho de teclado padrão para isso: Ctrl+ K, Ctrl+ O (você precisará manter pressionada a tecla Ctrl e digitar ko e depois soltar Ctrl )

Em versões anteriores, consulte:

Macro do Visual Studio para alternar entre arquivos CPP e H

ou

Abrir arquivo correspondente no Visual Assist

Kyle Alons
fonte
2
O Visual Assist é uma ótima ferramenta - eu recomendo para todos os desenvolvedores que usam MSVC
Stephen Nutt,
10
Para usuários preguiçosos do VisualAssist:Alt + O
nimcap
2
alguém tem uma solução para o VS2013?
Shaun Rowan
5
É integrado ao VS 2013. blogs.msdn.com/b/vcblog/archive/2013/08/23/…
Kyle Alons
3
Ok, meu mal. Não percebi que Ctrl + K & Ctrl + O é na verdade um ÚNICO comando de atalho; não duas opções iguais. Pode valer a pena mencionar na resposta para pessoas que são novas no VS :)
Petr Peller
31

No Visual Studio 2013, um atalho de teclado padrão para isso é Ctrl+ K, Ctrl+O

Anton K
fonte
não funciona para mim.2013 Community Edition. Configurações Gerais. Qual é o nome do commad na janela Personalizar / Teclado?
Jurlie
12
Nome do comando:EditorContextMenus.CodeWindow.ToggleHeaderCodeFile
codekaizen
24

Você pode adicionar esta macro à configuração do seu VS (via Ferramentas -> Macros -> Macro Explorer) e então atribuir uma tecla de atalho a ela (via Ferramentas -> Opções -> Ambiente -> Teclado).

Eu acabei de escrevê-lo (queria tentar fazer isso há anos!), Mas parece funcionar até agora, tanto no VS2008 quanto no VS2010.

Como é uma macro, você pode editá-la para incluir quaisquer regras que desejar (por exemplo, procurar em outras pastas ou regras de nomenclatura especiais se você tiver um único cabeçalho compartilhado por vários arquivos cpp ou semelhantes).

Aqui está a macro (tenho certeza que poderia ser melhor escrita; não estou familiarizado com os objetos VS e só percebi que as macros estavam usando .Net na metade do processo de escrita :)):

Sub FileSwitch()
    Try
        Dim CurrentPath As String = DTE.ActiveDocument.FullName
        Dim OtherPath As String

        If (IO.Path.HasExtension(CurrentPath)) Then
            Dim CurrentExtension As String = IO.Path.GetExtension(CurrentPath)

            Select Case CurrentExtension
                Case ".h", ".hpp", ".hxx"
                    OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cpp")
                    If (Not IO.File.Exists(OtherPath)) Then
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".c")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cxx")
                        End If
                    End If
                Case ".cpp", ".c", ".cxx"
                    OtherPath = IO.Path.ChangeExtension(CurrentPath, ".h")
                    If (Not IO.File.Exists(OtherPath)) Then
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hpp")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hxx")
                        End If
                    End If
                Case Else
            End Select
            If (OtherPath <> Nothing) Then
                DTE.ItemOperations.OpenFile(OtherPath)
            End If
        End If

    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try
End Sub

Aqui está uma captura de tela (muito ampla :) que mostra a aparência do editor de macro e das caixas de diálogo de teclas de atalho / opções, para ajudar aqueles que não estão familiarizados com eles:

insira a descrição da imagem aqui

Leo Davidson
fonte
1
Outro truque de macro favorito do VS: Grave uma macro para anexar o depurador ao exe em que você está sempre trabalhando e, em seguida, cole-a na barra de ferramentas. Anexo de um clique para aquele processo em execução sempre que você precisar depurá-lo.
Leo Davidson
Wow isso é ótimo! Funciona melhor do que o Nifty Solutions Plugin, porque o Plugin só pode alternar entre .h e .cpp, ele não muda de .hpp para .cpp
j00hi
Mas onde colocar a macro? Por alguma razão, meu VS2010 já tem uma macro "Módulo1" ... então, cliquei duas vezes para editá-la e inseri o código da macro dentro de "Módulo público Módulo1". A partir daí Ferramentas => Opções => Ambiente => Teclado para configurar um atalho no Editor de Texto.
Qwertie
Excelente, testado e funcionando. Resposta postada em novembro de 2010 - Ainda funciona em julho de 2012. Perfeito!
rptr
1
Alex: As macros são globais para o Visual Studio. Eles são salvos em "projetos de macro" (que permitem salvar e carregar grupos de macros), mas eles não estão relacionados ao tipo usual de solução / projeto, pelo que eu posso dizer. Tenho várias macros definidas no projeto de macro padrão que estão disponíveis antes (e depois) de abrir qualquer solução ou projeto.
Leo Davidson
9

Experimente o PhatStudio . É gratuito e vem com um instalador fácil.

  • ALT+ S= Alternar entre cabeçalho / arquivo de origem

  • ALT+ O= Abrir um arquivo (suporta pesquisa instantânea por meio de digitação, como o menu iniciar no Windows Vista / 7).

Tymek
fonte
Obrigado, esta é a solução mais fácil do grupo, e gratuita também.
Russell Davis
8

Experimente o Visual Assist, que apresenta esse mesmo recurso (entre outros):

http://www.wholetomato.com/

A funcionalidade de navegação de código - da qual a troca de cabeçalho / cpp é uma parte - é realmente boa.

(Eu também avaliei seus recursos de intellisense e refatoração, mas nem todo mundo com quem conversei concordou comigo.)

EDITAR: acabei de lembrar, o Nifty Solution Plugin também faz isso - além de outra coisa semelhante ao Visual Assist, embora nada mais - e eles são gratuitos:

http://code.google.com/p/niftyplugins/

(O plugin forçado do cara também é ótimo. Muito melhor do que o lixo VSSCC padrão.)


fonte
Vou dar uma olhada no Visual Assist. Eu presumi que fosse apenas para linguagens .NET.
Nate
5

No Visual Studio 2008 e 2010, você pode clicar com o botão direito em seu arquivo .cpp e escolher Ir para o arquivo de cabeçalho ... que o levará em uma direção. Para a outra direção, se você clicar com o botão direito em algo que está declarando no cabeçalho e escolher Ir para a definição, isso o levará na outra direção. Você pode ter que passar por uma caixa de diálogo de resolução de ambigüidade se escolher o construtor, porque o nome da função corresponde ao nome da classe, mas se você escolher qualquer outra coisa, irá direto para onde quiser. Eu sei que esta é uma abordagem de dois cliques, em vez de um toque de tecla, mas ela faz o que você deseja.

Kate Gregory
fonte
5

Se você posicionar o mouse sobre uma declaração de função no cabeçalho e pressionar F12, o arquivo cpp será aberto na definição do arquivo cpp ... Eu uso esse recurso extensivamente!


fonte
5

Não vejo essa resposta aqui, mas pelo menos no Visual Studio 2012 (Express incluído!), Você pode simplesmente atribuir seu próprio comando de teclado para ir para o arquivo de cabeçalho (NOTA: só vai para um lado - você não pode ir de volta ao arquivo de origem, infelizmente ...)

  1. Vá para Ferramentas / Opções / Ambiente / Teclado.
  2. Encontre o seguinte comando: EditorContextMenus.CodeWindow.GoToHeaderFile
  3. Atribua qualquer combinação de teclas que você deseja (Alt-S funciona)
  4. Lucro

Não tenho certeza em quais versões do VS isso funciona, mas não requer nenhum suplemento e parece funcionar em pelo menos uma direção.

Aardvarkk
fonte
No Visual Studio 2013, há um comando chamado EditorContextMenus.CodeWindow.ToggleHeaderCodeFile que faz exatamente isso, alterna entre os arquivos .h e .cpp.
Jaanus Varus
3

Sou fã do Visual Assist por fazer isso. Não é barato, mas fornece muito mais funcionalidade do que alternar entre cabeçalho e fonte. Eu também uso muito seu arquivo aberto em recursos de navegação de projetos e aulas. Claro que a macro é grátis ...

JohnO
fonte
2

Para Visual Studio 2013, conforme mencionado por outros, é o comando denominado:

EditorContextMenus.CodeWindow.ToggleHeaderCodeFile

e tem como combinação padrão de teclas: Ctrl+ K, Ctrl+ O, mas pode ser alterado se você introduzir a nova combinação de teclas que você gosta no

Pressione as teclas de atalho:

debaixo

Ferramentas -> Opções -> Ambiente -> Teclado .

Assim, você pode escolher uma combinação de teclas personalizadas, pois a minha opção favorita para .h para .cpp é Ctrl+ Tab.

meJustAndrew
fonte
1

O assistente visual também não é compatível com as edições Express do Visual Studio. Então você está preso à macro se estiver usando esse IDE>

Fion
fonte
0

No Visual Studio 2008 é Alt+ O.

Marek Szanyi
fonte
8
Você deve ter o Visual Assist instalado - essa é a combinação de teclas do comando Visual Assist.
sean e
0

Em sua sabedoria (in) finita, a MS decidiu remover macros no MSVS 2012, portanto, a macro acima não funcionará.

Para o MSVS 2012, descobri este:

http://www.dwmkerr.com/switch/

É altamente configurável + se você quiser ajudar a melhorá-lo, pode fazê-lo no GitHub.

Csimbi
fonte
0

No Visual Studio 2013 é ALT+O

Sagi Sulimani
fonte