Modifica del comportamento Ctrl + Tab per spostarsi tra i documenti in Visual Studio

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

  •  09-06-2019
  •  | 
  •  

Domanda

È possibile cambiare il modo Ctrl + Tab E Spostare + Ctrl + Tab lavorare in Visual Studio?Ho disabilitato la finestra del navigatore popup perché desidero solo passare da un elemento all'altro nel controllo scheda.Il mio problema è l'incoerenza di ciò che fa il passaggio al documento successivo e precedente.

Ogni altro programma che utilizza un controllo scheda per il documento aperto che ho visto utilizza Ctrl + Tab per spostarsi da sinistra a destra e Spostare + Ctrl + Tab andare da destra a sinistra.Visual Studio interrompe questo problema saltando all'ultima scheda selezionata.Non puoi mai sapere su quale documento ti ritroverai, e non sarà mai lo stesso due volte.

È molto controintuitivo.È questo un modo sottile per incoraggiare tutti ad avere sempre e solo due documenti aperti contemporaneamente?


Diciamo che ho alcuni file aperti.Sto lavorando in uno e ho bisogno di vedere cosa c'è nella scheda successiva a destra.In ogni altra singola applicazione sulla faccia della Terra, Ctrl + Tab mi porterà lì.Ma in Visual Studio non ho idea a quale delle altre schede mi porterà.Se ho solo due documenti aperti, funziona benissimo.Non appena arrivi a tre o più, tutte le scommesse vengono annullate su quale scheda Visual Studio ha deciso di inviarti.

Il problema è che non dovrei pensare allo strumento, dovrebbe passare in secondo piano e dovrei pensare al compito.Il comportamento attuale della scheda continua a distrarmi dall'attività e mi costringe a prestare attenzione allo strumento.

È stato utile?

Soluzione

In Visual Studio 2015 (così come nelle versioni precedenti di VS, ma è necessario installare Utensili elettrici per la produttività se utilizzi VS2013 o versioni precedenti), sono disponibili due nuovi comandi in Visual Studio:

Window.NextTab EWindow.PreviousTab

Vai a rimapparli da Ctrl+Alt+Pagina su/Ctrl+Alt+Pagina giù A Ctrl+Tab/Ctrl+Spostare+Tab In:

Menù Utensili -> Opzioni -> Ambiente -> Tastiera

Nota:Nelle versioni precedenti come Visual Studio 2010, Window.NextTab e Window.PreviousTab venivano denominati Window.NextDocumentWellTab EWindow.PreviousDocumentWellTab.

Altri suggerimenti

Visual Studio 2010 ha integrato un modo per risolvere questo problema.

Per impostazione predefinita, Ctrl+Tab E Ctrl+Spostare+Tab sono assegnati a Window.[Previous/Next]..Document, ma puoi, attraverso

Tools -> Options -> Environment -> Keyboard,

rimuovere quelle assegnazioni di tasti e riassegnarle a Window.[Next/Previous]Tab per aggiungere il comportamento desiderato.

può essere cambiato, almeno nel VS 2012 (penso che dovrebbe funzionare anche per il 2010).

1) TOOLS > Options > Environment > Keyboard

(Sì TOOLS, è VS2012!) Ora tre scorciatoie da controllare.

2) Window.NextDocumentWindow - puoi raggiungerlo rapidamente digitando nel riquadro di ricerca in alto.Ora questo è tuo nemico.Rimuovilo se non ti piace.Cambialo in qualcos'altro (e non dimenticare il file Assegnare pulsante) se vuoi averne uno tuo, ma ricorda quella scorciatoia qualunque sia alla fine.Tornerà utile più tardi.

(Voglio dire, questa è la scorciatoia che ricorda la tua ultima scheda)

enter image description here

3) Ora cerca Window.NextDocumentWindowNav - è uguale al precedente ma mostra un'anteprima delle schede aperte (con questo popup puoi passare ad altre finestre troppo velocemente).Non l'ho mai trovato utile però.Fai tutto ciò menzionato nel passaggio 2 (non dimenticare di farlo Ricordare).

4) Window.NextTab - la tua pozione magica.Ciò ti consentirebbe di scorrere le schede nell'ordine in avanti.Forse lo desideri CTRL+TAB?Ancora una volta il passaggio 2 e Ricordare.

5) Ora posiziona il cursore nel Premi i tasti di scelta rapida: casella di testo (non importa cosa è selezionato attualmente, non lo farai Assegnare questa volta) e digita la prima delle tre (o due o una) scorciatoia.

enter image description here

Vedrai Scorciatoia attualmente utilizzata da: elencato.Assicurati di non avere voci duplicate per il collegamento.Nella foto non ci sono voci duplicate.Nel caso in cui tu abbia (una rarità), dì X, poi vai su X e rimuovi la scorciatoia.Ripeti questo passaggio anche per altre scorciatoie.

6) Ora ripeti 1-5 per Previous anche scorciatoie (preferibilmente aggiungendo Spostare).

7) Bonus:Seleziona lo schema di mappatura VS2005 (nella parte superiore della stessa casella), quindi ora ottieni F2 per Rinominare membri e non CTRL+R+R, E F7 per Visualizza codice e non CTRL+ALT+0.

Sono dell'opinione che VS abbia ragione per impostazione predefinita.Trovo estremamente utile che VS ricordi cosa ho usato per ultimo e semplifichi il passaggio, proprio come fa il sistema operativo stesso (su ALT+TAB).Anche il mio browser fa lo stesso per impostazione predefinita (Opera), anche se so che Firefox si comporta diversamente.

In Visual Studio 2012 o versioni successive (2013, 2015, 2017...):

  1. Sfoglia il menu Strumenti / Opzioni / Ambiente / Tastiera.
  2. Cerca il comando "Window.NextTab", imposta il collegamento su Ctrl+Tab
  3. Cerca il comando "Window.PreviousTab", imposta il collegamento su Ctrl+Spostare+Tab

enter image description here

Passare al post del blog Macro non stupidificante della scheda Visual Studio e utilizzare la macro.Dopo aver applicato la macro all'installazione di Visual Studio, puoi associarvi le tue scorciatoie da tastiera preferite.Notare inoltre la correzione del registro nei commenti per la mancata visualizzazione del fumetto delle macro poiché potrebbero diventare fastidiosi dopo un po'.

Dopo un paio d'ore di ricerca ho trovato una soluzione su come passare da un documento aperto all'altro utilizzando CTRL+TAB che si muovono da sinistra a destra e SPOSTARE+ CTRL+ TAB andare da destra a sinistra.

In breve devi copiare e incollare questa 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

La macro deriva da:www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Se non aggiungi mai una macro a Visual Studio, è disponibile un collegamento molto utile su come farlo fallo.

La filosofia dell'ordine delle schede di Visual Studio è molto controintuitiva poiché l'ordine delle schede visualizzate differisce dalla logica di cambio scheda, rendendo l'ordine delle schede completamente inutile.

Quindi, finché non si presenta una soluzione migliore, modifica il layout della finestra (in Ambiente-> Generale) da documenti a schede a documenti multipli;non cambierà il comportamento, ma ridurrà la confusione causata dalle schede.

In questo modo troverai anche DocumentWindowNav più utile!

Ctl + Alt + PagSu O PgGiù le scorciatoie hanno funzionato per attivare/disattivare la scheda successiva/precedente fuori dalla finestra per me...

Sono d'accordo al 100% con Jeff.

Ho lavorato su Borland C++ Builder per diversi anni e una delle funzionalità che mi manca di più è l'ordine di tabulazione "corretto" dei documenti con Ctrl-Tab.Come ha detto Jeff, "Il comportamento attuale della scheda continua a distrarmi dall'attività e mi costringe a prestare attenzione allo strumento " è esattamente quello che penso e sono molto sorpreso dal fatto che non ci siano molte persone che si lamentano di questo.

Penso Ctrl-F6 - NextDocumentWindowNav: naviga tra i documenti in base all'ora dell'ultima attivazione del documento.Questo comportamento è molto simile a come si comportavano le applicazioni MDI ai vecchi tempi.

Tenendo conto di ciò, di solito lo uso Ctrl+F6 per passare da un documento all'altro (il che è molto utile per passare da un file .cpp a un file .h quando si lavora su un progetto C++) anche quando ci sono più di 2 documenti attualmente aperti.Ad esempio, se hai 10 documenti aperti (Tab1, Tab2, Tab3, ...., Tab10), clicco su Tab1 e ​​poi su Tab2.Quando io faccio Ctrl+F6 e rilascio i tasti, passerò a Tab1.Premendo Ctrl+F6 ancora una volta mi riporterà alla Tab2.

Immagino che tu voglia quello che VSS chiama Next(Previous)DocumentWindow.Per impostazione predefinita, è attivo Ctrl(-Maiusc)-F6 sul mio VSS 8.SU Ctrl(-Maiusc)-Tab loro hanno Next(Previous)DocumentWindowNav.È possibile modificare le assegnazioni dei tasti tramite Strumenti/Opzioni/Tastiera.

Nel ramo del registro:HKEY_Current_User Software Microsoft VisualStudio 9.0 Aggiungi dword denominata "usemrudocordering" con valore di 1.Ordinerà i documenti in modo che quelli utilizzati più recentemente vengano posizionati a sinistra.Non è perfetto ma è migliore del comportamento scorretto predefinito.

Non utilizzo Visual Studio (sì, davvero, non lo uso), Ma Tasto di scelta rapida automatico può rimappare qualsiasi tasto di scelta rapida a livello globale o in una particolare applicazione:

#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

Queste sono due rimappature del mio script AutoHotKey principale.Penso che sia uno strumento eccellente per questo tipo di attività.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top