Alterando o comportamento de Ctrl + Tab para mover entre documentos no Visual Studio

StackOverflow https://stackoverflow.com/questions/21027

  •  09-06-2019
  •  | 
  •  

Pergunta

É possível mudar como Ctrl + Aba e Mudança + Ctrl + Aba trabalha no Visual Studio?Desativei a janela pop-up do navegador porque só quero alternar entre os itens no controle de guias.Meu problema é a inconsistência do que a mudança para o documento seguinte e anterior faz.

Todos os outros programas que usam um controle de guia para documentos abertos que vi usam Ctrl + Aba mover-se da esquerda para a direita e Mudança + Ctrl + Aba ir da direita para a esquerda.O Visual Studio quebra isso saltando para a última guia selecionada.Você nunca sabe em que documento irá parar, e nunca é a mesma coisa duas vezes.

É muito contra-intuitivo.Esta é uma maneira sutil de incentivar todos a terem apenas dois documentos abertos ao mesmo tempo?


Digamos que eu tenha alguns arquivos abertos.Estou trabalhando em um e preciso ver o que está na próxima aba à direita.Em todas as outras aplicações na face da Terra, Ctrl + Aba vai me levar até lá.Mas no Visual Studio, não tenho ideia para qual das outras guias ele me levará.Se eu tiver apenas dois documentos abertos, isso funciona muito bem.Assim que você chegar a três ou mais, todas as apostas serão canceladas quanto à guia para a qual o Visual Studio decidiu enviá-lo.

O problema com isso é que eu não deveria ter que pensar na ferramenta, ela deveria ficar em segundo plano e eu deveria estar pensando na tarefa.O comportamento atual da guia continua me tirando da tarefa e me faz prestar atenção na ferramenta.

Foi útil?

Solução

No Visual Studio 2015 (assim como nas versões anteriores do VS, mas você deve instalar Ferramentas elétricas de produtividade se você estiver usando o VS2013 ou inferior), há dois novos comandos no Visual Studio:

Janela.NextTab eJanela.AnteriorTab

Basta ir remapeá-los de Ctrl+Alt.+Subir página/Ctrl+Alt.+Página para baixo para Ctrl+Aba/Ctrl+Mudança+Aba em:

Cardápio Ferramentas -> Opções -> Ambiente -> Teclado

Observação:Em versões anteriores, como Visual Studio 2010, Window.NextTab e Window.PreviousTab eram nomeados Window.NextDocumentWellTab eWindow.PreviousDocumentWellTab.

Outras dicas

O Visual Studio 2010 possui uma maneira integrada de resolver isso.

Por padrão, Ctrl+Aba e Ctrl+Mudança+Aba são atribuídos a Window.[Previous/Next]..Document, mas você pode, através

Tools -> Options -> Environment -> Keyboard,

remova essas atribuições de teclas e reatribua-as para Window.[Next/Previous]Tab para adicionar o comportamento desejado.

pode ser alterado, pelo menos no VS 2012 (acho que deveria funcionar também em 2010).

1) TOOLS > Options > Environment > Keyboard

(Sim, FERRAMENTAS, é VS2012!) Agora, três atalhos para verificar.

2) Window.NextDocumentWindow - você pode chegar lá rapidamente digitando no painel de pesquisa na parte superior.Agora este é o seu inimigo.Remova-o se você não gostar.Mude para outra coisa (e não se esqueça do Atribuir botão) se quiser ter o seu próprio, mas lembre-se desse atalho, seja lá o que for, no final.Será útil mais tarde.

(Quero dizer, este é o atalho que lembra sua última guia)

enter image description here

3) Agora procure Window.NextDocumentWindowNav - é igual ao anterior, mas mostra uma prévia das guias abertas (você pode navegar para outras janelas muito rapidamente com este pop-up).Eu nunca achei isso útil.Faça tudo o que foi mencionado no passo 2 (não se esqueça de lembrar).

4) Window.NextTab - sua poção mágica.Isso permitiria percorrer as guias na ordem de avanço.Pode ser que você queira CTRL+ABA?Novamente passo 2 e lembrar.

5) Agora coloque o cursor no Pressione as teclas de atalho: caixa de texto (não importa o que está selecionado atualmente, você não vai Atribuir desta vez) e digite o primeiro dos três (ou dois ou um) atalhos.

enter image description here

Você vai ver Atalho usado atualmente por: listado.Certifique-se de não ter nenhuma entrada duplicada para o atalho.Na foto, não há entradas duplicadas.Caso você tenha (uma raridade), diga X, depois vá até X e remova o atalho.Repita esta etapa também para outros atalhos.

6) Agora repita 1-5 para Previous atalhos também (de preferência adicionando Mudança).

7) Bônus:Selecione o esquema de mapeamento VS2005 (na parte superior da mesma caixa), então agora você obtém F2 para Renomear membros e não CTRL+R+R, e F7 para Ver código e não CTRL+Alt.+0.

Sou da opinião que o VS acertou por padrão.Acho extremamente útil que o VS lembre o que usei por último e facilite a troca, assim como o próprio sistema operacional faz (em Alt.+ABA).Meu navegador também faz o mesmo por padrão (Opera), embora eu saiba que o Firefox se comporta de maneira diferente.

No Visual Studio 2012 ou posterior (2013, 2015, 2017...):

  1. Navegue pelo menu Ferramentas/Opções/Ambiente/Teclado.
  2. Procure o comando 'Window.NextTab', defina o atalho para Ctrl+Aba
  3. Procure o comando 'Window.PreviousTab', defina o atalho para Ctrl+Mudança+Aba

enter image description here

Navegue até a postagem do blog Macro de desestupidificador da guia Visual Studio e faça uso da macro.Depois de aplicar a macro à instalação do Visual Studio, você poderá vincular seus atalhos de teclado favoritos a eles.Observe também a correção do registro nos comentários por não exibir o balão de macro, pois eles podem ficar irritantes depois de um tempo.

Depois de algumas horas de pesquisa, encontrei uma solução para alternar entre documentos abertos usando CTRL+ABA que se movem da esquerda para a direita e MUDANÇA+ CTRL+ ABA ir da direita para a esquerda.

Resumindo, você precisa copiar e colar esta macro:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module TabCtrl

Public Sub TabForward()
    Dim i As Integer
    Dim activateNext As Boolean = False

    For i = 1 To DTE.Windows.Count
        If DTE.Windows().Item(i).Kind = "Document" Then

            If activateNext Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If

            If DTE.Windows().Item(i) Is DTE.ActiveWindow Then
                activateNext = True
            End If
        End If
    Next

    ' Was the last window... go back to the first
    If activateNext Then
        For i = 1 To DTE.Windows.Count
            If DTE.Windows().Item(i).Kind = "Document" Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If
        Next
    End If
done:

End Sub

Public Sub TabBackward()
    Dim i As Integer
    Dim activateNext As Boolean = False

    For i = DTE.Windows.Count To 1 Step -1
        If DTE.Windows().Item(i).Kind = "Document" Then

            If activateNext Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If

            If DTE.Windows().Item(i) Is DTE.ActiveWindow Then
                activateNext = True
            End If
        End If
    Next

    ' Was the first window... go back to the last
    If activateNext Then
        For i = DTE.Windows.Count To 1 Step -1
            If DTE.Windows().Item(i).Kind = "Document" Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If
        Next
    End If
done:

End Sub

End Module

A macro vem de:www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Se você nunca adicionar uma macro ao Visual Studio, há um link muito útil sobre como faça isso.

A filosofia da ordem de guias do Visual Studio é muito contra-intuitiva, pois a ordem das guias exibidas difere da lógica de troca de guias, tornando a ordem das guias completamente inútil.

Portanto, até que surja uma solução melhor, altere o layout da janela (em Ambiente->Geral) de documentos com guias para documentos múltiplos;isso não mudará o comportamento, mas reduzirá a confusão causada pelas guias.

Dessa forma você também achará o DocumentWindowNav mais útil!

Ctrl + Alt. + PgUp ou PgDn atalhos funcionaram para alternar a guia seguinte/anterior fora da caixa para mim ...

Estou 100% de acordo com Jeff.

Eu trabalhei no Borland C++ Builder por vários anos e um dos recursos que mais sinto falta é a ordem 'correta' de tabulação de documentos com Ctrl-Aba.Como Jeff disse: "O comportamento atual da guia continua me tirando da tarefa e me faz prestar atenção na ferramenta " é exatamente como me sinto sobre isso, e estou muito surpreso com o fato de não haver muitas pessoas reclamando disso.

Eu penso Ctrl-F6 - NextDocumentWindowNav - navega pelos documentos com base na hora da última ativação do documento.Esse comportamento é muito parecido com o comportamento dos aplicativos MDI antigamente.

Levando isso em consideração, costumo usar Ctrl+F6 para alternar entre 2 documentos (o que é muito útil para alternar entre arquivos .cpp e .h ao trabalhar em um projeto c++), mesmo quando há mais de 2 documentos abertos no momento.Por exemplo, se você tiver 10 documentos abertos (Tab1, Tab2, Tab3, ...., Tab10), clico em Tab1 e ​​depois em Tab2.Quando eu faço Ctrl+F6 e solte as teclas, pularei para Tab1.Pressionando Ctrl+F6 novamente me levará de volta à Tab2.

Acho que você quer o que o VSS chama de Next(Anterior)DocumentWindow.Por padrão, está ativado Ctrl(-Shift)-F6 no meu VSS 8.Sobre Ctrl(-Shift)-Tab Eles têm Next(Previous)DocumentWindowNav.Você pode alterar as atribuições das teclas em Ferramentas/Opções/Teclado.

Na filial do registro:Hkey_current_user software Microsoft VisualStudio 9.0 Adicione DWORD nomeado "UsoMrudocordering" com valor de 1.Ele solicitará os documentos usados ​​mais recentemente e serão colocados à esquerda.Não é perfeito, mas é melhor que o mau comportamento padrão.

Eu não uso o Visual Studio (sim, sério, eu não uso), mas AutoHotkey pode remapear qualquer tecla de atalho globalmente ou em um aplicativo específico:

#IfWinActive Microsoft Excel (application specific remapping)

; Printing area in Excel (@ Ctrl+Alt+A)
^!a::
Send !ade
return

#IfWinActive


$f4::
; Closes the active window (make double tapping F4 works like ALT+F4)
if f4_cnt > 0 
{
    f4_cnt += 1
    return
}

f4_cnt = 1
SetTimer, f4_Handler, 250
return

f4_Handler:
SetTimer, f4_Handler, off

if (f4_cnt >= 2)    ; Pressed more than two times
{   
    SendInput !{f4}
} else {
    ; Resend f4 to the application
    Send {f4}
}

f4_cnt = 0
return

Estes são dois remapeamentos do meu script principal do AutoHotKey.Acho que é uma excelente ferramenta para este tipo de tarefas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top