2008-08-21 16 views
230

¿Es posible cambiar la forma Ctrl +Tab y Shift +Ctrl +Tab trabajo en Visual Studio? He desactivado la ventana del navegador emergente, porque solo quiero cambiar entre los elementos en el control de pestañas. Mi problema es la inconsistencia de lo que hacen los cambios al documento siguiente y al anterior.El cambio de comportamiento Ctrl + Tab para moverse entre documentos en Visual Studio

Cualquier otro programa que utiliza un control de ficha para el documento abierto que he visto utiliza Ctrl + Tab para moverse de izquierda a derecha y Shift + Ctrl + Tab para ir de derecha a izquierda. Visual Studio rompe esto con su salto a la última pestaña seleccionada. Nunca se puede saber en qué documento terminará, y nunca es lo mismo dos veces.

Es muy contrario a la intuición. ¿Es esta una manera sutil de alentar a todos a que solo tengan dos documentos abiertos a la vez?


Digamos que tengo algunos archivos abiertos. Estoy trabajando en uno, y necesito ver lo que está en la siguiente pestaña a la derecha. En cualquier otra aplicación única en la faz de la Tierra, Ctrl + La pestaña me llevará hasta allí. Pero en Visual Studio, no tengo idea de a cuál de las otras pestañas me llevaré. Si solo tengo dos documentos abiertos, esto funciona muy bien. Tan pronto como llegue a tres o más, todas las apuestas estarán desactivadas en cuanto a la pestaña a la que Visual Studio ha decidido enviarte.

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

+3

"I ha ¿Ha desactivado la ventana emergente del navegador? ... ¿Cómo se desactivó la molesta ventana emergente de la ventana de selección? Es tan molesto que parpadea cada vez que presiono Ctrl + Tab. – demoncodemonkey

+26

Ah lo tengo, en Herramientas-> Opciones-> Teclado Remaché Ctrl + Tab de Window.NextDocumentWindowNav a Window.NextDocumentWindow (eliminó el "Nav"). Y lo mismo con Ctrl + Shift + Tab con Window.PreviousDocumentWindowNav. – demoncodemonkey

+0

+1, si hubiera una respuesta decente aquí ... –

Respuesta

175

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

Window.NextTab y Ventana.PreviousTab

Sólo tienes que ir reasignar desde Ctrl + Alt + PageUp/Ctrl + Alt + PageDown a Ctrl + Tab/Ctrl + Shift + Pestaña en:

menú Herramientas -> Opciones -> Medio Ambiente -> Teclado

Nota: En versiones anteriores, como Visual Studio 2010, Window.NextTab y Window.PreviousTab fueron nombrados Window.NextDocumentWellTab y Window.PreviousDocumentWellTab.

+0

Wahoo !!! Funciona perfecto ¡Gracias por el aviso! –

+1

Esta es la mejor respuesta ahora para visual studio 2010. Esto fue muy útil. La macro solución aceptada es inferior a esta. – jmq

+1

¡+1 millón de votos positivos! ¡He tenido este complemento instalado por un tiempo y no sabía que esto fuera posible! –

-5

no uso de Visual Studio (sí, de verdad, yo no lo use), pero AutoHotkey puede reasignar cualquier tecla de acceso directo a nivel mundial o en una aplicación 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 

Estos son dos modificaciones del mapa de mi script AutoHotKey principal. Creo que es una excelente herramienta para este tipo de tareas.

+3

Lo sentimos, pero el problema es que hay _no_clave que hace lo correcto, por lo que esto no ayudará. –

4

Supongo que quiere lo que VSS llama Next (Previous) DocumentWindow. De forma predeterminada, está en Ctrl (-Shift) -F6 en mi VSS 8. En Ctrl (-Shift) -Tab tienen Next(Previous)DocumentWindowNav. Puede cambiar las asignaciones de teclas a través de Herramientas/Opciones/Teclado.

+3

Ctrl- (Shift-) F6 no te lleva a la pestaña izquierda o derecha. es el mismo orden que Ctrl-Tab, pero sin la ventana molesta. – shoosh

+1

Corregir ... 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 documento: http://connect.microsoft.com/VisualStudio/feedback/ detalles/571750/window-nexttab-and-window-previoustab-keybindings-do-not-work-on-form-designer-tabs –

6

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

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

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

5

Estoy 100% de acuerdo con Jeff.

que había trabajado en Borland C++ Builder para varios años y una de las características que más extraño es el orden de tabulación documento 'correcta' con Ctrl - Tab. Como dijo Jeff, "El comportamiento actual de las pestañas me sigue sacando de la tarea y me obliga a prestar atención a la herramienta" es exactamente lo que siento al respecto, y estoy muy sorprendido por el hecho de que no hay muchas personas se quejan de esto.

creo Ctrl - F6 - NextDocumentWindowNav - navega documentos basados ​​en la última activada tiempo del documento. Este comportamiento es muy parecido a cómo solían comportarse las aplicaciones MDI en los viejos tiempos.

Con esta toma esto en cuenta, que suelen utilizar Ctrl +F6 para cambiar entre 2 documentos (que es bastante útil en el cambio entre .cpp y .h cuando se trabaja en proyecto de 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 lo hago Ctrl + F6 y suelte las teclas, saltaré a Tab1. Al presionar Ctrl + F6 volveré a llevarme a Tab2.

8

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

+0

Aparentemente aún se rompe bajo ciertas condiciones, pero esta es la más cercana a la que realmente funciona como se desea. –

+0

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 BinaryEditor. 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 archivé un error con Microsoft que tiene más detalles (http://goo.gl/K9rz), y dijeron que cambiarán 'Window.NextTab' y' Window.PreviousTab' para proporcionar la conmutación no MRU para documentos en la "próxima versión de Visual Studio". –

+0

MS: << en la "siguiente versión de Visual Studio" >> - yeahrright – superjos

7

Después de un par de horas de búsqueda he encontrado una solución cómo cambiar entre documentos abiertos utilizando CTRL + TAB que se mueven de izquierda a derecha y SHIFT + CTRL + TAB a ir a la derecha a la izquierda.

En definitiva es necesario 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 agregue una macro a Visual Studio. Hay un enlace muy útil sobre cómo do it.

+2

¿Todavía demora 10 segundos para 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 no pude soportarlo ... –

+1

Romkyns: Sí, me temo. Todavía no es una solución viable. –

+1

Romkyns: sí, es verdad, 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 impulso, 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 aparecerá. Para mí esta solución es lo suficientemente buena, no he encontrado una mejor y odio el comportamiento orginalne ctrl + tab. – user410261

4

En rama del registro: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 complemento DWORD denominado "UseMRUDocOrdering" con un valor de 1. Se ordenará documentos utilizados de manera más recientemente se colocan a la izquierda. No es perfecto, pero es mejor que la mala conducta predeterminada.

63

Visual Studio 2010 tiene, incorporado, una forma de resolver esto.

Por defecto, Ctrl + Tab y Ctrl + Shift + Tab se asignan a Window.[Previous/Next]..Document, pero se puede, a través

Tools -> Options -> Environment -> Keyboard, 

eliminar esas asignaciones de teclas y reasignarlos a Window.[Next/Previous]Tab para agregar el comportamiento deseado.

+4

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, se merece una ... Pero la mía responde al pregunta correctamente, aunque menos que tu respuesta. ¿Es solo que el mío espera que la gente comprenda realmente un menú de opciones en lugar de "Aquí, ejecuta este script" o "Instala este complemento" ... ¿No es este un sitio para programadores? – Zoey

+2

Puede ser un poco de edición ayudaría. Permítame. +1 por cierto. – nawfal

+0

@nawfal Gracias en la edición :) – Zoey

45

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

1) TOOLS > Options > Environment > Keyboard

(Sí Herramientas, su VS2012!) Ahora, tres accesos directos a comprobar.

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

(me refiero a esto es el acceso directo que recuerda la última pestaña)

enter image description here

3) Ahora busca Window.NextDocumentWindowNav - este es el mismo que el anterior pero muestra una vista previa de las pestañas abiertas (se 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 se olvide de recuerde).

4) Window.NextTab - tu poción mágica. Esto le permitirá desplazarse por las pestañas en el orden de reenvío. ¿Puede ser que desee CTRL + TAB? De nuevo, el paso 2 y recuerden.

5) Ahora coloca el cursor en la combinación de teclas Press: cuadro de texto (no importa lo que está seleccionado actualmente, no vas a Asignar este tiempo) y el tipo primero de los tres (o dos o uno) atajos.

enter image description here

Verás acceso directo utilizado actualmente por: enumerado. 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 atajo. Repita este paso para otros atajos también.

6) Ahora repita 1-5 para Previous accesos directos también (preferiblemente agregando Shift).

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

Soy de la opinión de que VS lo tiene bien por defecto. Me resulta extremadamente útil que VS recuerde lo que utilicé por última vez, y facilita el cambio, al igual que lo 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.

+0

No considero que este comportamiento sea anti-no-contrario-intuitivo también. ;-) – dotNET

+0

La opinión en la parte superior de esta respuesta siempre me ha molestado como no informativa y (debido a su gran tamaño) innecesariamente antagónica. – thepaulpage

+0

@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 expresado su opinión de que no es intuitivo. – nawfal

13

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

  1. navegar por el menú Herramientas/Opciones/Medio Ambiente/Teclado.
  2. búsqueda para el comando 'Window.NextTab', establece el acceso directo a Ctrl +Tab
  3. Búsqueda de la ventana de comandos'.PreviousTab', establece el acceso directo a Ctrl + Shift + Tab

enter image description here

+3

Como referencia, de forma predeterminada, Ctrl + Tab y Ctrl + Shift + Tab se asignan a los comandos 'Window.NextDocumentWindowNav' y 'Window.PreviousDocumentWindowNav'. –

3

Ctl + Alt + Re Pág o AvPág atajos trabajaron para alternar siguiente/tab prev de la caja para mí ...

+2

Lo ilógico es: ¡si la barra de pestañas tiene solo espacio horizontal para n pestañas, esos accesos directos no harán que la pestaña pedalee por las pestañas que no están visibles en este momento! – sergiol

Cuestiones relacionadas