更改Ctrl + Tab行为以在Visual Studio中的文档之间移动

Jef*_*tis 281 visual-studio

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

使用选项卡控件打开文档的其他每个程序我都看到使用Ctrl+ Tab从左到右移动,Shift+ Ctrl+ Tab从右到左移动.Visual Studio通过跳转到选定的最后一个选项卡来中断此操作.你永远不会知道你最终会得到什么文件,它永远不会是两次相同的方式.

这非常违反直觉.这是一种微妙的方式来鼓励每个人一次只打开两份文件吗?


假设我打开了一些文件.我在一个工作,我需要看到右边下一个选项卡中的内容.在地球表面的每一个单独的应用程序中,Ctrl+ Tab都会让我在那里.但是在Visual Studio中,我不知道它将采用哪些其他选项卡.如果我只打开两个文档,这很有效.一旦你去了三个或更多,所有的赌注都是关于Visual Studio决定发送给你的标签.

这个问题是我不应该考虑这个工具,它应该淡入背景,我应该考虑这个任务.当前的选项卡行为使我不能完成任务,并且必须注意该工具.

the*_*age 222

在Visual Studio 2015(以及VS的早期版本中,但如果您使用的是VS2013或更低版本,则必须安装Productivity Power Tools),Visual Studio中有两个新命令:

Window.NextTabWindow.PreviousTab

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

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

注意:在早期版本(如Visual Studio 2010)中,Window.NextTab和Window.PreviousTab分别命名为Window.NextDocumentWellTabWindow.PreviousDocumentWellTab.

  • 在Visual Studio 2012中,命令名称稍有变化.它现在是*Window.NextTab*和*Window.PreviousTab*. (18认同)
  • 如果您使用Visual Studio Express,这将无济于事 (4认同)
  • @JP ten Berge - 我在VS 2012中测试了这个,如果你在Razor视图(.cshtml文件)上,Window.PreviousTab快捷方式(Ctrl + Alt + PgUp)不起作用.非常讨厌,虽然Ctrl + Alt + PgDown仍然有效,所以你并没有完全卡住.还有Window.NextDocumentWindow(Ctrl + F6),虽然这似乎以奇怪的顺序循环选项卡. (3认同)
  • 还没有Visual Studio 2012的版本 (2认同)

Zoe*_*oey 69

Visual Studio 2010内置了一种解决方案.

默认情况下,分配Ctrl+ TabCtrl+ Shift+ ,但您可以通过TabWindow.[Previous/Next]..Document

Tools -> Options -> Environment -> Keyboard,
Run Code Online (Sandbox Code Playgroud)

删除这些键分配并重新分配它们Window.[Next/Previous]Tab以添加所需的行为.

  • 显然有人混淆了downvote背后的推理 - 如果一个答案不符合这个问题,或者它实际上是否定的,那么它应该得到一个......但我的答案是正确的,尽管不如你的答案.是不是我希望人们真正理解选项菜单,而不是"在这里,运行这个脚本"或"安装这个插件!"......这不是一个程序员的网站吗? (4认同)

naw*_*fal 51

它可以改变,至少在VS 2012中(我认为它也适用于2010年).

1) TOOLS > Options > Environment > Keyboard

(Yes Tools,VS2012!)现在要检查三个快捷方式.

2)Window.NextDocumentWindow- 您可以通过在顶部的搜索窗格上键入来快速到达那里.现在这是你的敌人.如果你不喜欢它,删除它.如果想拥有自己的,请将其更改为其他内容(并且不要忘记" 分配"按钮),但要记住最后的快捷方式.它会在以后派上用场.

(我的意思是这是记住你上一个标签的快捷方式)

在此输入图像描述

3)现在查找Window.NextDocumentWindowNav- 这与上面相同,但显示已打开选项卡的预览(您可以使用此弹出窗口快速导航到其他窗口).我从来没有发现这有用.完成步骤2中提到的所有内容(不要忘记记住).

4)Window.NextTab- 你的魔药.这将允许您按正向顺序循环切换选项卡.可能你想要CTRL+ TAB?再次步骤2并记住.

5)现在将光标放在按下快捷键:文本框(与当前选择的内容无关,您不打算分配此时间),然后键入三个(或两个或一个)快捷键中的第一个.

在此输入图像描述

您将看到目前使用的快捷方式:已列出.确保快捷方式没有重复条目.在图片中,没有重复的条目.如果你有(很少见),说X,然后转到X,然后删除快捷方式.对其他快捷方式也重复此步骤.

6)现在重复1-5以获得Previous快捷方式(最好是添加Shift).

7)奖励:选择VS2005映射方案(在同一个盒子的顶部),所以现在你得到F2重新命名的成员,而不是CTRL+ R+ R,以及F7用于查看代码,而不是CTRL+ ALT+ 0.

我认为VS默认是正确的.我发现VS记得我最后使用的内容非常有用,并且使切换更容易,就像操作系统本身所做的那样(在ALT+上TAB).默认情况下我的浏览器也会这样做(Opera),但我知道Firefox的行为方式不同.


Col*_*nic 16

在Visual Studio 2012或更高版本(2013,2015,2017 ...)中:

  1. 浏览菜单工具/选项/环境/键盘.
  2. 搜索命令'Window.NextTab',将快捷方式设置为Ctrl+Tab
  3. 搜索命令'Window.PreviousTab',将快捷方式设置为Ctrl+ Shift+Tab

在此输入图像描述

  • 作为参考,默认情况下,Ctrl + Tab和Ctrl + Shift + Tab被映射到命令'Window.NextDocumentWindowNav'和'Window.PreviousDocumentWindowNav'. (4认同)

小智 8

导航到博客文章Visual Studio Tab Un-stupidifier Macro并使用宏.将宏应用于Visual Studio安装后,您可以将喜爱的键盘快捷键绑定到它们.另请注意注释中的注册表修复不显示宏气球,因为它们可能会在一段时间后变得烦人.


小智 7

经过几个小时的搜索,我找到了一个解决方案,如何使用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
Run Code Online (Sandbox Code Playgroud)

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

如果您从未向Visual Studio添加宏,则有一个非常有用的链接如何执行.

  • 第一次执行此操作还需要10秒钟,并且每次使用它时都会闪烁系统托盘图标吗?这就是VS2005所做的,我无法接受...... (2认同)

小智 6

Visual Studio选项卡顺序的原理非常违反直觉,因为显示的选项卡的顺序与选项卡切换逻辑不同,使选项卡的顺序完全无用.

因此,在出现更好的解决方案之前,将窗口布局(在Environment-> General中)从选项卡式文档更改为多个文档; 它不会改变行为,但它减少了标签引起的混乱.

这样你也会发现DocumentWindowNav更有用!


Fla*_*dan 6

Ctl+ Alt+ PgUpPgDn快捷方式可以为我切换下一个/ prev选项卡开箱即用...

  • 不合逻辑的事情是:如果您的标签栏只有n个标签的水平空间,那些快捷方式将不会使标签循环显示当前不可见的标签! (3认同)

but*_*oxa 5

我猜你想要什么VSS调用Next(Previous)DocumentWindow.默认情况下,它Ctrl(-Shift)-F6在我的VSS 8上.Ctrl(-Shift)-Tab他们有Next(Previous)DocumentWindowNav.您可以通过工具/选项/键盘更改键分配.

  • Ctrl-(Shift-)F6不会让您进入左侧或右侧选项卡.它的顺序与Ctrl-Tab相同,但没有恼人的窗口. (3认同)

Kei*_*Kei 5

我100%与杰夫达成协议.

我曾在Borland的C++ Builder的工作了好几年,我最怀念的特点之一是"正确的"文档Tab键顺序与Ctrl- Tab.正如杰夫所说," 当前的标签行为让我不能完成任务并让我不得不关注这个工具 ",这正是我对此的看法,而且我对这一事实感到非常惊讶很多人抱怨这个.

我认为Ctrl- F6- NextDocumentWindowNav - 根据文档的上次激活时间导航文档.这种行为很像MDI应用程序过去的行为.

考虑到这一点,我通常使用Ctrl+ F6来切换2个文档(这在处理c ++项目时在.cpp和.h文件之间切换非常方便),即使当前打开的文档超过2个.例如,如果您打开了10个文档(Tab1,Tab2,Tab3,....,Tab10),我单击Tab1然后单击Tab2.当我执行Ctrl+ F6并释放键时,我将跳转到Tab1.再次按Ctrl+ F6将带我回到Tab2.


小智 -3

我觉得目前最重要的答案已经过时了。在 Visual Studio 2021 (v1.56) 中,您不需要安装任何扩展或弄乱任何配置文件。您只需执行以下步骤:

  1. 单击左下角的齿轮图标。
  2. 选择“键盘快捷键”。
  3. 搜索“workbench.action.previousEditor”和“workbench.action.nextEditor”并通过单击该行左侧的铅笔图标来编辑其键绑定。

如果您确实更改为“Ctrl+tab”或其他命令已在使用的任何其他快捷键,它会让您知道并为您提供更改这些快捷键的选项。我个人将它们更改为“Ctrl+PgUp”和“Ctrl+PgDn”,因此这只是直接交换。

  • 这个答案是针对 VScode 的,尽管问题是针对 Visual Studio 的 (2认同)