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


286

È possibile cambiare il modo in cui Ctrl+ Tabe Shift+ Ctrl+ Tabfunzionano in Visual Studio? Ho disabilitato la finestra del navigatore popup, perché voglio solo passare da un elemento all'altro nel controllo a schede. Il mio problema è l'incoerenza di ciò che fa il passaggio al documento successivo e precedente.

Ogni altro programma che utilizza un controllo tab per documenti aperti che ho visto usa Ctrl+ Tabper spostarsi da sinistra a destra e Shift+ Ctrl+ Tabper spostarsi da destra a sinistra. Visual Studio lo interrompe con il salto all'ultima scheda selezionata. Non puoi mai sapere su quale documento finirai, e non è mai allo stesso modo due volte.

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


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

Il problema è che non dovrei pensare allo strumento, dovrebbe svanire in secondo piano e dovrei pensare al compito. L'attuale comportamento della scheda continua a trascinarmi fuori dall'attività e mi fa prestare attenzione allo strumento.


4
"Ho disabilitato la finestra del navigatore popup" ... Come hai disattivato il fastidioso popup della finestra di selezione? È così fastidioso sfarfallio ogni volta che premo Ctrl + Tab.
demoncodemonkey

31
Ah capito, in Strumenti-> Opzioni-> Tastiera Ho rimappato Ctrl + Tab da Window.NextDocumentWindowNav a Window.NextDocumentWindow (rimosso il "Nav"). E lo stesso con Ctrl + Maiusc + Tab con Window.PreviousDocumentWindowNav.
demoncodemonkey,

11
È sbagliato che mi piaccia questo comportamento, in quanto è come alt-tab?
Theo Belaire,

3
Visual Studio sembra spostarsi tra le schede utilizzando il comportamento "MRU (" utilizzato più di recente). Notepad ++ offre un'opzione per abilitare / disabilitare questo comportamento (così sembra che ad alcune persone piaccia). Mi piacerebbe davvero poter passare a un comportamento regolare / intuitivo.
André Caron,

4
Onestamente, non mi piace quando un programma scorre in ordine di tabulazione visiva. Sono d'accordo con il comportamento di Visual Studio. Per ogni scheda Ctrl +, torna all'ultimo utilizzato, quindi all'ultimo utilizzato prima. Lo schema è stato lì per molto tempo (VB6 o prima che io pensi). Voglio dire, usa il modello che preferisci, ma se sai come funziona, è più facile da apprezzare :)
Josh Robinson

Risposte:


227

In Visual Studio 2015 (oltre alle versioni precedenti di VS, ma è necessario installare Productivity Power Tools se si utilizza VS2013 o precedente), in Visual Studio sono disponibili due nuovi comandi:

Window.NextTab e Window.PreviousTab

Basta rimappare da Ctrl+ Alt+ PageUp/ Ctrl+ Alt+ PageDowna Ctrl+ Tab/ Ctrl+ Shift+ Tabin:

Strumenti menu -> Opzioni -> Ambiente -> Tastiera

Nota: nelle versioni precedenti come Visual Studio 2010, Window.NextTab e Window.PreviousTab erano denominati Window.NextDocumentWellTab e Window.PreviousDocumentWellTab .


1
Questa è la migliore risposta ora per Visual Studio 2010. Questo è stato molto utile. La soluzione macro accettata è inferiore a questa.
jmq

2
Nessuna versione ancora per Visual Studio 2012
Colonnello Panic,

4
Questo non aiuta se si utilizza Visual Studio Express
BornToCode

18
Con Visual Studio 2012, i nomi dei comandi sono leggermente cambiati. Ora è Window.NextTab e Window.PreviousTab .
JP dieci Berge,

3
@JP ten Berge: l'ho provato in VS 2012 e il collegamento Window.PreviousTab (Ctrl + Alt + PgUp) non funziona se si è in una vista Razor (file .cshtml). Molto fastidioso, anche se Ctrl + Alt + PgDown funziona ancora, quindi non sei completamente bloccato. C'è anche Window.NextDocumentWindow (Ctrl + F6) anche se questo sembra scorrere le schede in uno strano ordine.
DGreen

70

Visual Studio 2010 ha, incorporato, un modo per risolvere questo problema.

Per impostazione predefinita, Ctrl+ Tabe Ctrl+ Shift+ Tabsono assegnati a Window.[Previous/Next]..Document, ma è possibile, tramite

Tools -> Options -> Environment -> Keyboard,

rimuovere quelle assegnazioni chiave e riassegnarle Window.[Next/Previous]Tabper aggiungere il comportamento desiderato.


5
Apparentemente qualcuno ha confuso il ragionamento alla base di un voto negativo. Se una risposta non è conforme alla domanda o se è effettivamente negativa ne merita una ... Ma la mia risponde correttamente alla domanda, anche se meno della tua risposta. È solo che il mio si aspetta che le persone comprendano effettivamente un menu di opzioni piuttosto che "Qui, esegui questo script" o, "Installa questo componente aggiuntivo!" ... Non è un sito per programmatori?
Zoey,

1
Le persone potrebbero aver cercato di passare da una scheda del documento all'altra. La modifica di "Finestra. Scheda [Avanti / Indietro] non ha influito sulle schede del documento per me in VS2010, mentre la soluzione di @thepaulpage ha funzionato. +1 per l'approccio chiaro e senza componenti aggiuntivi!
GnomeDePlume

⁺¹, ho anche pensato che qualcuno potesse sottovalutare la tua risposta: Visual Studio 2010 aveva una versione strana che non aveva l'opzione «Tastiera». Quindi probabilmente quello aveva questa versione, ha esaminato le opzioni e ha deciso che la risposta era sbagliata dal momento che con il loro punto di vista soggettivo è davvero così.
Ciao Angelo

1
Ho dovuto rimuovere l'associazione Window.[Previous|Next]DocumentWindowdall'impostazione affinché funzioni (in VS2015). Per impostazione predefinita, esisteva un bind di editor di testo separato che sembrava avere la priorità.
Kat,

51

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

1) TOOLS > Options > Environment > Keyboard

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

2) Window.NextDocumentWindow- puoi raggiungerlo rapidamente digitando nel riquadro di ricerca in alto. Ora questo è il tuo nemico . Rimuovilo se non ti piace. Modificalo in qualcos'altro (e non dimenticare il pulsante Assegna ) se vuoi averne uno tuo, ma ricorda quel collegamento qualunque esso sia alla fine . Ti tornerà utile in seguito.

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

inserisci qui la descrizione dell'immagine

3) Ora cerca Window.NextDocumentWindowNav: è lo stesso di sopra ma mostra un'anteprima delle schede aperte (puoi navigare in altre finestre troppo rapidamente con questo pop-up). Non l'ho mai trovato utile. Fai tutto ciò di cui al punto 2 (non dimenticare di ricordare ).

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

5) Ora posiziona il cursore nei tasti di scelta rapida Premi: casella di testo (non importa ciò che è attualmente selezionato, non assegnerai questa volta) e digita il primo dei tre (o due o uno) tasti di scelta rapida.

inserisci qui la descrizione dell'immagine

Vedrai il collegamento attualmente utilizzato da: elencato. Assicurarsi di non avere voci duplicate per il collegamento. Nella foto non ci sono voci duplicate. Nel caso abbiate (una rarità), dite X, quindi andate su X e rimuovete il collegamento. Ripetere questo passaggio anche per altre scorciatoie.

6) Ora ripeti 1-5 anche per le Previousscorciatoie (preferibilmente aggiungendo Shift).

7) Bonus: seleziona lo schema di mappatura VS2005 (nella parte superiore della stessa casella), quindi ora ottieni F2per Rinomina membri e non CTRL+ R+ R, e F7per Visualizza codice e non CTRL+ ALT+ 0.

Sono dell'opinione che VS abbia capito bene per impostazione predefinita. Trovo estremamente utile che VS ricordi ciò che ho usato per ultimo e faciliti 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.


Non trovo questo comportamento anche anti-non-intuitivo. ;-)
dotNET il

l'opinione in cima a questa risposta mi ha sempre infastidito come non informativo e (a causa delle grandi dimensioni) inutilmente antagonista.
thepaulpage

@thepaulpage Ho aggiornato la mia risposta. Il motivo per cui ho dovuto esprimere un'opinione è perché molti utenti (incluso OP) avevano espresso la loro opinione che fosse controintuitivo.
nawfal,

16

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+ Shift+Tab

inserisci qui la descrizione dell'immagine


4
Per riferimento, per impostazione predefinita, Ctrl + Tab e Ctrl + Maiusc + Tab sono associati ai comandi 'Window.NextDocumentWindowNav' e 'Window.PreviousDocumentWindowNav'.
Rory O'Kane,

8

Passare al post sul blog Macro Visual Studio Tab Un-stupidifier Macro e utilizzare la macro. Dopo aver applicato la macro all'installazione di Visual Studio, puoi associare le tue scorciatoie da tastiera preferite. Notare anche la correzione del registro nei commenti per non visualizzare il fumetto macro poiché potrebbero diventare fastidiosi dopo un po '.


Apparentemente si rompe ancora in alcune condizioni, ma questa è la più spessa per funzionare davvero come desiderato.
Jeff Cuscutis,

In VS 2010 è possibile configurare Ctrl + Tab e Ctrl + Maiusc + Tab per passare da un documento di testo all'altro, ma non funziona con le schede di progettazione o con l'Editor binario. La macro del precedente post sul blog è l'unico metodo che funziona con la maggior parte dei tipi di finestre del documento. Ho anche presentato un bug a Microsoft che ha maggiori dettagli ( goo.gl/K9rz ) e hanno detto che cambieranno Window.NextTabe Window.PreviousTabche forniranno la commutazione non MRU per i documenti nella "prossima versione di Visual Studio".
Greg Bray,

7

Dopo un paio d'ore di ricerche ho trovato una soluzione su come passare da un documento aperto all'altro usando CTRL+ TABche si sposta da sinistra a destra e SHIFT+ CTRL+ TABper andare da destra a sinistra.

In breve, è necessario 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 proviene da: www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Se non aggiungi mai una macro a Visual Studio, c'è un link molto utile su come farlo .


2
Ci vogliono ancora 10 secondi per farlo la prima volta e lampeggiare l'icona della barra delle applicazioni ogni volta che la usi? Questo è quello che ha fatto VS2005 e non potevo prenderlo ...
Roman Starkov

1
Romkyns: Sì, ho paura. Non è ancora una soluzione praticabile.
David Foster,

1
Romkyns: sì, è vero, ogni volta che eseguo la macro, viene visualizzato un fumetto nella barra delle applicazioni per indicare che la macro è in esecuzione. per sbarazzarsi di quel ballon è possibile modificare il registro di Windows e aggiungere il seguente valore DWORD: "DontShowMacrosBalloon" = 1, in quella chiave: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 (utilizzare 9.0 per Visual Studio 2008; 8.0 per 2005) . Il fumetto scompare ma l'icona della barra delle applicazioni verrà comunque visualizzata. Per me questa soluzione è abbastanza buona non ho trovato un migliore e odio l'orginalne ctrl + tab comportamento.
user410261

6

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

Quindi fino a quando non si presenta una soluzione migliore, cambia il layout della finestra (in Ambiente-> Generale) da documenti a schede a più documenti; non cambierà il comportamento, ma riduce la confusione causata dalle schede.

In questo modo troverai anche DocumentWindowNav più utile!


6

Ctl+ Alt+ PgUpo PgDnscorciatoie hanno funzionato per attivare / disattivare la scheda successiva / precedente fuori dalla scatola per me ...


3
La cosa illogica è: se la tua barra delle schede ha solo spazio orizzontale per n Tab, quelle scorciatoie non faranno scorrere la scheda per le schede che al momento non sono visibili!
sergiol,

5

Sono d'accordo al 100% con Jeff.

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

Penso Ctrl- F6- NextDocumentWindowNav - naviga i documenti in base all'ultima ora di attivazione del documento. Questo comportamento è molto simile al comportamento delle applicazioni MDI in passato.

Tenendo conto di ciò, di solito uso Ctrl+ F6per alternare tra 2 documenti (il che è abbastanza utile nel passaggio tra i file .cpp e .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), faccio clic su Tab1 e ​​quindi su Tab2. Quando faccio Ctrl+ F6e rilascio i tasti, passerò a Tab1. Premere di nuovo Ctrl+ F6per tornare a Tab2.


5

Immagino che tu voglia quello che VSS chiama Next (Previous) DocumentWindow. Per impostazione predefinita, è acceso Ctrl(-Shift)-F6sul mio VSS 8. Su Ctrl(-Shift)-Tabhanno Next(Previous)DocumentWindowNav. È possibile modificare le assegnazioni dei tasti tramite Strumenti / Opzioni / Tastiera.


3
Ctrl- (Maiusc-) F6 non ti porta alla scheda sinistra o destra. è lo stesso ordine di Ctrl-Tab ma senza la fastidiosa finestra.
shoosh

1
Corretto ... Visual Studio 2010 ha Window.NextTab e Window.PreviousTab, che modificano i documenti non basati su MRU, ma non funzionano con tutti i tipi di documenti: connect.microsoft.com/VisualStudio/feedback/details/571750/…
Greg Bray,

4

Nel ramo del registro di sistema: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 aggiungere DWORD denominato "UseMRUDocOrdering" con valore pari a 1. Ordinerà i documenti in modo che gli ultimi dati utilizzati vengano posizionati a sinistra. Non è perfetto ma migliore del comportamento scorretto predefinito.


0

Aggiornato a VS 2017+, dove, secondo il commento di @ J-Bob nella risposta di @ thepaulpage, (enfasi aggiunta):

Sembra che i comandi siano cambiati di nuovo. È ora il 2017 e le scorciatoie da tastiera si chiamano Open Next Editor e Open Previous Editor . Non hai bisogno di estensioni per questo.

Puoi trovare le opzioni in Impostazioni, a cui puoi accedere tramite il simbolo dell'ingranaggio in basso a sinistra o tramite il [Ctrl]+,comando.


-5

Non uso Visual Studio ( sì, davvero, non lo uso ), ma AutoHotkey 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

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


3
Siamo spiacenti, ma il problema è che non esiste una chiave che faccia la cosa giusta, quindi questo non aiuta.
Roman Starkov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.