有可能改变Ctrl + Tab和Shift + Ctrl + Tab在Visual Studio中的工作方式吗?我已经禁用了弹出式导航器窗口,因为我只想在选项卡控件中的项之间切换。我的问题是切换到下一个和上一个文档所做的不一致。

我所见过的其他使用tab控件打开文档的程序都使用Ctrl + tab从左向右移动,Shift + Ctrl + tab从右向左移动。Visual Studio通过跳转到所选的最后一个选项卡来打破这一点。你永远不知道你会在什么文件上结束,而且它不会以相同的方式出现两次。

这是违反直觉的。这是一种鼓励每个人一次只打开两个文档的微妙方式吗?


假设我打开了几个文件。我在一个工作,我需要看看右边的下一个标签是什么。在地球上的任何一个应用程序中,Ctrl + Tab都可以做到。但是在Visual Studio中,我不知道它会把我带到其他哪个选项卡。如果我只打开两个文档,这就很好。当你转到三个或更多的标签时,所有关于Visual Studio决定将你发送到哪个标签的赌注都结束了。

这样做的问题是,我不应该考虑工具,它应该消失在背景中,而我应该考虑任务。当前的标签行为不断把我从任务中拉出来,使我不得不关注这个工具。


当前回答

在Visual Studio 2015(以及以前版本的VS,但如果你使用VS2013或以下版本,你必须安装生产力工具)中,Visual Studio中有两个新命令:

窗口。NextTab和 窗口。PreviousTab

只需将它们从Ctrl+Alt+PageUp/Ctrl+Alt+PageDown重新映射到Ctrl+Tab/Ctrl+Shift+Tab:

菜单工具->选项->环境->键盘

注意:在早期版本中,如Visual Studio 2010, Window。NextTab和Window。PreviousTab被命名为Window。NextDocumentWellTab和 Window.PreviousDocumentWellTab。

其他回答

在注册部门: 微软HKEY_CURRENT_USER \ Software \ \ VisualStudio \ 9.0 添加名为UseMRUDocOrdering的DWORD,值为1。 它将对文档进行排序,以便最近使用的文档放在左边。这并不完美,但总比默认的不当行为好。

经过几个小时的搜索,我找到了一个解决方案,如何使用CTRL+TAB从左到右切换打开的文档和SHIFT+ CTRL+TAB从右到左。

简而言之,你需要复制和粘贴这个宏:

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

这个宏来自:www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

如果你从未将宏添加到Visual Studio中,有一个非常有用的链接来做这件事。

在Visual Studio 2015(以及以前版本的VS,但如果你使用VS2013或以下版本,你必须安装生产力工具)中,Visual Studio中有两个新命令:

窗口。NextTab和 窗口。PreviousTab

只需将它们从Ctrl+Alt+PageUp/Ctrl+Alt+PageDown重新映射到Ctrl+Tab/Ctrl+Shift+Tab:

菜单工具->选项->环境->键盘

注意:在早期版本中,如Visual Studio 2010, Window。NextTab和Window。PreviousTab被命名为Window。NextDocumentWellTab和 Window.PreviousDocumentWellTab。

我猜你想要什么VSS称为下(上)文档窗口。默认情况下,它在我的VSS 8上按Ctrl(-Shift)-F6。按Ctrl(shift)-Tab键,有下一个(上一个)DocumentWindowNav。你可以通过工具/选项/键盘改变键值。

导航到博客文章Visual Studio Tab unstupidifier宏并使用宏。在将宏应用到Visual Studio的安装之后,您可以将您喜欢的快捷键绑定到它们。还要注意注释中的注册表修复,不显示宏气球,因为它们可能会在一段时间后变得烦人。