Cambiar el comportamiento de Ctrl + Tab para moverse entre documentos en Visual Studio

286

¿Es posible cambiar cómo funcionan Ctrl+ Taby Shift+ Ctrl+ Taben Visual Studio? He desactivado la ventana emergente del navegador, porque solo quiero cambiar entre elementos en el control de pestañas. Mi problema es la inconsistencia de lo que hace el cambio al documento siguiente y anterior.

Todos los demás programas que usan un control de pestañas para documentos abiertos que he visto usan Ctrl+ Tabpara moverse de izquierda a derecha y Shift+ Ctrl+ Tabpara ir de derecha a izquierda. Visual Studio rompe esto con su salto a la última pestaña seleccionada. Nunca puede saber en qué documento terminará, y nunca es de la misma manera dos veces.

Es muy contraintuitivo. ¿Es esta una forma sutil de alentar a todos a tener dos documentos abiertos a la vez?


Digamos que tengo algunos archivos abiertos. Estoy trabajando en uno y necesito ver qué hay en la siguiente pestaña a la derecha. En cualquier otra aplicación en la faz de la Tierra, Ctrl+ Tabme llevará allí. Pero en Visual Studio, no tengo idea de a qué otras pestañas me llevará. Si solo tengo dos documentos abiertos, esto funciona muy bien. Tan pronto como vaya a tres o más, todas las apuestas estarán canceladas en cuanto a qué pestaña Visual Studio ha decidido enviarle.

El problema con esto es que no debería tener que pensar en la herramienta, debería desvanecerse en el fondo y debería estar pensando en la tarea. El comportamiento actual de las pestañas me saca de la tarea y me obliga a prestar atención a la herramienta.

Jeff Cuscutis
fuente
44
"He desactivado la ventana emergente del navegador" ... ¿Cómo desactivó la molesta ventana emergente de la ventana de selección? Es tan molesto simplemente parpadear cada vez que presiono Ctrl + Tab.
demoncodemonkey 01 de
31
Ah lo tengo, en Herramientas-> Opciones-> Teclado reasigné Ctrl + Tab de Window.NextDocumentWindowNav a Window.NextDocumentWindow (quité el "Nav"). Y lo mismo con Ctrl + Shift + Tab con Window.PreviousDocumentWindowNav.
demoncodemonkey 02 de
11
¿Está mal que me guste este comportamiento, ya que es como alt-tab?
Theo Belaire
3
Visual Studio parece navegar por las pestañas utilizando el comportamiento "utilizado más recientemente" (MRU). Notepad ++ ofrece una opción para activar / desactivar este comportamiento (por lo que parece que a algunas personas les gusta). Sin embargo, me gustaría poder cambiar a un comportamiento regular / intuitivo.
André Caron
44
Honestamente, no me gusta cuando un programa se desplaza en orden de tabulación visual. Estoy de acuerdo con el comportamiento de Visual Studio. Por cada ctrl + pestaña, vuelve al último que se usó, luego el último que se usó antes. El patrón ha estado allí durante mucho tiempo (VB6 o antes, creo). Quiero decir, usa el patrón que prefieras, pero si sabes cómo funciona, es más fácil de apreciar :)
Josh Robinson

Respuestas:

227

En Visual Studio 2015 (así como en versiones anteriores de VS, pero debe instalar Productivity Power Tools si está usando VS2013 o inferior), hay dos comandos nuevos en Visual Studio:

Window.NextTab y Window.PreviousTab

Simplemente vuelva a asignarlos de Ctrl+ Alt+ PageUp/ Ctrl+ Alt+ PageDowna Ctrl+ Tab/ Ctrl+ Shift+ Taben:

Herramientas de menú -> Opciones -> Entorno -> Teclado

Nota: en versiones anteriores como Visual Studio 2010, Window.NextTab y Window.PreviousTab se llamaban Window.NextDocumentWellTab y Window.PreviousDocumentWellTab .

thepaulpage
fuente
1
Esta es la mejor respuesta ahora para Visual Studio 2010. Esto fue muy útil. La solución macro aceptada es inferior a esta.
jmq
2
Todavía no hay versión para Visual Studio 2012
Coronel Panic
44
Esto tampoco ayudará si usa Visual Studio Express
BornToCode
18
Con Visual Studio 2012, los nombres de los comandos han cambiado ligeramente. Ahora es Window.NextTab y Window.PreviousTab .
JP ten Berge
3
@JP ten Berge: he probado esto en VS 2012, y el acceso directo Window.PreviousTab (Ctrl + Alt + PgUp) no funciona si estás en una vista Razor (archivo .cshtml). Muy molesto, aunque Ctrl + Alt + PgDown todavía funciona, por lo que no está completamente atascado. También hay Window.NextDocumentWindow (Ctrl + F6), aunque eso parece alternar las pestañas en un orden extraño.
DGreen
70

Visual Studio 2010 ha incorporado una forma de resolver esto.

Por defecto, Ctrl+ Taby Ctrl+ Shift+ Tabestán asignados a Window.[Previous/Next]..Document, pero puede, a través de

Tools -> Options -> Environment -> Keyboard,

elimine esas asignaciones clave y reasignelas Window.[Next/Previous]Tabpara agregar el comportamiento deseado.

Zoey
fuente
55
Al parecer, alguien ha confundido el razonamiento detrás de un voto negativo: si una respuesta no cumple con la pregunta o si es realmente negativa, merece una ... Pero la mía responde la pregunta correctamente, aunque menos que su respuesta. ¿Es solo que el mío espera que la gente entienda realmente un menú de opciones en lugar de "Aquí, ejecute este script" o "Instale este complemento!" ... ¿No es este un sitio para programadores?
Zoey
1
Es posible que las personas hayan estado buscando cambiar entre pestañas de documentos. Editar 'Window. [Next / Previuos] Tab' no me afectó las pestañas del documento en VS2010, mientras que la solución de @thepaulpage sí. ¡+1 para el enfoque claro y sin complementos!
GnomeDePlume
⁺¹, también pensé por qué alguien podría rechazar su respuesta: Visual Studio 2010 tenía una versión extraña que no tenía la opción «Teclado». Entonces, probablemente el que tenía esta versión, examinó las opciones y decidió que la respuesta era incorrecta, ya que, desde su punto de vista subjetivo, es así.
Hola Ángel
1
Tuve que eliminar el enlace de la Window.[Previous|Next]DocumentWindowconfiguración para que esto funcione (en VS2015). Por defecto, había un enlace de editor de texto separado que parecía tener prioridad.
Kat
51

se puede cambiar, al menos en VS 2012 (creo que también debería funcionar para 2010).

1) TOOLS > Options > Environment > Keyboard

(¡Sí, HERRAMIENTAS, es VS2012!) Ahora tres atajos para verificar.

2) Window.NextDocumentWindow- puede llegar allí rápidamente escribiendo en el panel de búsqueda en la parte superior. Ahora este es tu enemigo . Elimínalo si no te gusta. Cámbielo a otra cosa (y no olvide el botón Asignar ) si quiere tener el suyo, pero recuerde ese atajo, sea lo que sea al final . Te será útil más tarde.

(Quiero decir, este es el acceso directo que recuerda su última pestaña)

ingrese la descripción de la imagen aquí

3) Ahora busque Window.NextDocumentWindowNav: esto es lo mismo que arriba pero muestra una vista previa de las pestañas abiertas (puede navegar a otras ventanas demasiado rápido con esta ventana emergente). Sin embargo, nunca encontré esto útil. Haga todo lo mencionado en el paso 2 (no olvide recordar ).

4) Window.NextTab- tu poción mágica. Esto le permitiría recorrer las pestañas en el orden hacia adelante. Puede ser que quieras CTRL+ TAB? Nuevamente el paso 2 y recuerda .

5) Ahora coloque el cursor en el cuadro de texto Presionar teclas de método abreviado: (no importa lo que esté seleccionado actualmente, no va a asignar esta vez) y escriba el primero de los tres (o dos o uno) métodos abreviados.

ingrese la descripción de la imagen aquí

Verá el acceso directo que usa actualmente: listado. Asegúrese de no tener una entrada duplicada para el acceso directo. En la imagen, no hay entradas duplicadas. En caso de que tenga (una rareza), diga X, luego vaya a X y elimine el acceso directo. Repita este paso para otros atajos también.

6) Ahora repita 1-5 para los Previousatajos también (preferiblemente agregando Shift).

7) Bono: Elija un esquema de correlación de VS2005 (en la parte superior de la misma caja), por lo que ahora se obtiene F2por Renombrar miembros y no CTRL+ R+ R, y F7para Ver código y no CTRL+ ALT+ 0.

Soy de la opinión de que VS lo ha hecho bien por defecto. Encuentro extremadamente útil que VS recuerde lo que usé por última vez y que facilite el cambio, al igual que lo que hace el sistema operativo (en ALT+ TAB). Mi navegador también hace lo mismo por defecto (Opera), aunque sé que Firefox se comporta de manera diferente.

nawfal
fuente
No encuentro este comportamiento anti-no-anti-intuitivo también. ;-)
dotNET
La opinión en la parte superior de esta respuesta siempre me ha molestado como poco informativo y (debido al gran tamaño) innecesariamente antagónico.
thepaulpage
@thepaulpage He actualizado mi respuesta. La razón por la que tuve que dar una opinión es porque muchos usuarios (incluido OP) habían dado su opinión de que es contra-intuitivo.
nawfal
16

En Visual Studio 2012 o posterior (2013, 2015, 2017 ...):

  1. Explore el menú Herramientas / Opciones / Entorno / Teclado.
  2. Busque el comando 'Window.NextTab', establezca el acceso directo a Ctrl+Tab
  3. Busque el comando 'Window.PreviousTab', establezca el acceso directo a Ctrl+ Shift+Tab

ingrese la descripción de la imagen aquí

Coronel Panic
fuente
44
Como referencia, de forma predeterminada, Ctrl + Tab y Ctrl + Shift + Tab se asignan a los comandos 'Window.NextDocumentWindowNav' y 'Window.PreviousDocumentWindowNav'.
Rory O'Kane
8

Navegue a la publicación del blog Macro de Visual Studio Tab Un-stupidifier y haga uso de la macro. Después de aplicar la macro a su instalación de Visual Studio, puede vincular sus atajos de teclado favoritos. Observe también la corrección del registro en los comentarios para no mostrar el globo macro, ya que pueden volverse molestos después de un tiempo.

usuario178908
fuente
Aparentemente, todavía se rompe bajo algunas condiciones, pero esta es la más cercana para funcionar realmente como se desea.
Jeff Cuscutis
En VS 2010 puede configurar Ctrl + Tab y Ctrl + Shift + Tab para cambiar entre documentos de texto, pero no funciona con pestañas de diseñador o el Editor Binario. La macro de la publicación de blog anterior es el único método que funciona con la mayoría de los tipos de ventanas de documentos. También presenté un error con Microsoft que tiene más detalles ( goo.gl/K9rz ), y dijeron que cambiarán Window.NextTaby Window.PreviousTabproporcionarán un cambio sin MRU para los documentos en la "próxima versión de Visual Studio".
Greg Bray
7

Después de un par de horas de búsqueda, encontré una solución para cambiar entre documentos abiertos usando CTRL+ TABque se mueve de izquierda a derecha y SHIFT+ CTRL+ TABpara ir de derecha a izquierda.

En resumen, debe copiar y pegar 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

La macro proviene de: www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Si nunca agrega una macro a Visual Studio, hay un enlace muy útil sobre cómo hacerlo .

usuario410261
fuente
2
¿Todavía tarda 10 segundos en hacer esto la primera vez y muestra un icono de la bandeja del sistema cada vez que lo usa? Eso es lo que hizo VS2005, y yo no podía soportarlo ...
Romano Starkov
1
Romkyns: Sí, me temo. Todavía no es una solución viable.
David Foster
1
Romkyns: sí, es cierto, cada vez que ejecuto la macro, aparece un globo en la bandeja del sistema para indicar que la macro se está ejecutando. para deshacerse de ese globo, puede editar el Registro de Windows y agregar el siguiente valor DWORD: "DontShowMacrosBalloon" = 1, en esa clave: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 (use 9.0 para Visual Studio 2008; 8.0 para 2005) . El globo desaparece pero el icono de la bandeja del sistema seguirá apareciendo. Para mí, esta solución es lo suficientemente buena, no he encontrado una mejor y odio el comportamiento orginalne ctrl + tab.
user410261
6

La filosofía del orden de las pestañas de Visual Studio es muy contradictoria ya que el orden de las pestañas mostradas difiere de la lógica de cambio de pestañas, lo que hace que el orden de las pestañas sea completamente inútil .

Entonces, hasta que surja una mejor solución, cambie el diseño de la ventana (en Entorno-> General) de documentos con pestañas a documentos múltiples; no cambiará el comportamiento, pero reduce la confusión causada por las pestañas.

¡De esa manera también encontrará el DocumentWindowNav más útil!

Peter Mortensen
fuente
6

Ctl+ Alt+ PgUpo los PgDnatajos funcionaron para alternar la pestaña siguiente / anterior fuera de la caja para mí ...

FlashJordan
fuente
3
Lo ilógico es: si la barra de pestañas solo tiene espacio horizontal para n pestañas, esos accesos directos no harán que la pestaña se mueva por las pestañas que no están visibles en este momento.
sergiol
5

Estoy 100% de acuerdo con Jeff.

Había trabajado en Borland C ++ Builder durante varios años y una de las características que más extraño es el orden de tabulación de documentos 'correcto' con Ctrl- Tab. Como dijo Jeff, " El comportamiento actual de las pestañas me saca de la tarea y hace que tenga que prestar atención a la herramienta " es exactamente lo que siento por esto, y estoy muy sorprendido por el hecho de que no hay Mucha gente se queja de esto.

Creo que Ctrl- F6NextDocumentWindowNav - navega por los documentos en función de la última vez que se activó el documento. Este comportamiento es muy parecido al comportamiento de las aplicaciones MDI en los viejos tiempos.

Teniendo esto en cuenta, generalmente uso Ctrl+ F6para cambiar entre 2 documentos (lo cual es bastante útil para cambiar entre archivos .cpp y .h cuando trabajo en un proyecto c ++) incluso cuando hay más de 2 documentos abiertos actualmente. Por ejemplo, si tiene 10 documentos abiertos (Tab1, Tab2, Tab3, ...., Tab10), hago clic en Tab1 y luego en Tab2. Cuando hago Ctrl+ F6y suelto las teclas, saltaré a Tab1. Presionar Ctrl+ F6nuevamente me llevará de regreso a Tab2.

Kei
fuente
5

Supongo que quieres lo que VSS llama Siguiente (Anterior) DocumentWindow. Por defecto, está encendido Ctrl(-Shift)-F6en mi VSS 8. En Ctrl(-Shift)-Tabellos tienen Next(Previous)DocumentWindowNav. Puede cambiar las asignaciones de teclas a través de Herramientas / Opciones / Teclado.

buti-oxa
fuente
3
Ctrl- (Shift-) F6 no te lleva a la pestaña izquierda o derecha. es el mismo orden que Ctrl-Tab pero sin la molesta ventana.
shoosh el
1
Correcto ... Visual Studio 2010 tiene Window.NextTab y Window.PreviousTab, que no cambia los documentos basados ​​en MRU, pero no funciona con todos los tipos de documentos: connect.microsoft.com/VisualStudio/feedback/details/571750/…
Greg Bray
4

En la rama del registro: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 agregue DWORD llamado "UseMRUDocOrdering" con el valor de 1. Ordenará los documentos que se utilizaron más recientemente a la izquierda. No es perfecto, pero es mejor que el mal comportamiento predeterminado.

rifi-rafe
fuente
0

Actualizado a VS 2017+, donde, según el comentario de @ J-Bob bajo la respuesta de @ thepaulpage, (énfasis agregado):

Parece que los comandos han cambiado nuevamente. Ahora es 2017 y los atajos de teclado se llaman Abrir siguiente editor y Abrir anterior editor . No necesitas extensiones para esto.

Puede encontrar las opciones en Configuración, a las que se puede acceder mediante el símbolo de engranaje en la esquina inferior izquierda o mediante el [Ctrl]+,comando.

JWCS
fuente
-5

No uso Visual Studio ( sí, realmente, no lo uso ), pero AutoHotkey puede reasignar cualquier tecla de acceso rápido globalmente o en una aplicación en particular:

#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

Estas son dos reasignaciones de mi script principal de AutoHotKey. Creo que es una excelente herramienta para este tipo de tareas.

PabloG
fuente
3
Lo sentimos, pero el problema es que no hay una clave que haga lo correcto, por lo que esto no ayudará.
Roman Starkov el