代码之家  ›  专栏  ›  技术社区  ›  Jeff Cuscutis

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

  •  256
  • Jeff Cuscutis  · 技术社区  · 17 年前

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

    其他所有使用选项卡控件打开文档的程序都使用 Ctrl键 + 标签 从左向右移动 换档 + Ctrl键 + 标签 从右向左。Visual Studio通过跳到所选的最后一个选项卡来中断此操作。你永远不可能知道你会得到什么样的文件,而且两次都不可能是同一种方式。

    这是非常违反直觉的。这是否是一种微妙的方式来鼓励每个人只有两个文档同时打开?


    假设我打开了一些文件。我正在一个工作,我需要看看右边的下一个标签中是什么。在地球表面的每一个应用中, Ctrl键 + 标签 会带我去那儿的。但在Visual Studio中,我不知道它将带我访问其他哪些选项卡。如果我只有两个文件可以打开,这就很好了。一旦你去三个或更多,所有的赌注都是关于Visual Studio决定把你送到哪个选项卡。

    问题是我不需要考虑这个工具,它应该淡入背景,我应该考虑这个任务。当前的选项卡行为不断地将我从任务中拉出来,使我不得不注意该工具。

    12 回复  |  直到 7 年前
        1
  •  197
  •   Josh1billion    9 年前

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

    奈克斯塔布 窗口.previoustab

    只需重新制作它们 Ctrl键 + 中高音 + 翻页 / Ctrl键 + 中高音 + 翻页 Ctrl键 + 标签 / Ctrl键 + 换档 + 标签 在:

    菜单 工具 -gt; 选项 -gt; 环境 -gt; 键盘

    注意:在早期版本(如Visual Studio 2010)中,window.nextab和window.previoustab被命名为 window.nextdocumentwelltab窗口.nextdocumentwelltab window.previousDocumentWell选项卡 .

        2
  •  66
  •   Rohit Gupta    10 年前

    Visual Studio 2010内置了一种解决此问题的方法。

    默认情况下, Ctrl键 + 标签 Ctrl键 + 换档 + 标签 分配给 Window.[Previous/Next]..Document 但是你可以,通过

    Tools -> Options -> Environment -> Keyboard,
    

    删除这些密钥分配并将其重新分配给 Window.[Next/Previous]Tab 添加所需行为。

        3
  •  50
  •   Mwiza Nagarjuna Durgam    7 年前

    它可以改变,至少在2012年(我认为它也应该适用于2010年)。

    1) TOOLS > Options > Environment > Keyboard

    (是的,工具,它的VS2012!)现在检查三个快捷方式。

    2) Window.NextDocumentWindow -您可以通过在顶部的搜索窗格中键入来快速到达那里。现在这是你的 敌人 . 如果你不喜欢的话就把它拿走。把它换成别的(不要忘记 赋值 按钮)如果想拥有自己的, 但要记住,不管最后是什么,这条捷径 . 以后会很方便的。

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

    enter image description here

    3)现在寻找 Window.NextDocumentWindowNav -这与上面相同,但会显示已打开选项卡的预览(使用此弹出窗口,您可以快速导航到其他窗口)。但我从未发现这有帮助。执行步骤2中提到的所有操作(不要忘记 记得 )

    4) Window.NextTab -你的魔法药剂。这将允许您按前进顺序循环浏览选项卡。可能是你想要的 CTRL + 桌棋类游戏 ?再次执行步骤2和 记得 .

    5)现在将光标放在 按快捷键: 文本框(无论当前选择了什么,您都不会 赋值 这一次),然后键入三个(或两个或一个)快捷方式中的第一个。

    enter image description here

    你会看到 当前使用的快捷方式: 上市的。确保快捷方式没有重复条目。图片中没有重复条目。如果你有(稀有),比如说X,然后转到X,删除快捷方式。对其他快捷方式也重复此步骤。

    6)现在重复1-5 Previous 快捷方式(最好是添加 换档 )

    7)奖励:选择VS2005映射方案(位于同一个框的顶部),现在您可以 地上二层 对于 重命名 成员而不是 CTRL + R + R F7 对于 查看代码 而不是 CTRL + 中高音 + .

    我的观点是,VS默认情况下是正确的。我发现它非常有用,vs记住我上次使用的内容,使切换更容易,就像操作系统本身所做的(on 中高音 + 桌棋类游戏 )默认情况下,我的浏览器也一样(opera),尽管我知道火狐的行为不同。

        4
  •  13
  •   Colonel Panic    8 年前

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

    1. 浏览菜单“工具/选项/环境/键盘”。
    2. 搜索命令“window.nextab”,将快捷方式设置为 Ctrl键 + 标签
    3. 搜索命令“window.previoustab”,将快捷方式设置为 Ctrl键 + 换档 + 标签

    enter image description here

        5
  •  8
  •   Peter Mortensen icecrime    11 年前

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

        6
  •  7
  •   Mwiza Nagarjuna Durgam    7 年前

    经过几个小时的搜索,我找到了一个解决方案,如何在打开的文档之间切换 CTRL + 桌棋类游戏 从左向右移动 换档 + CTRL + 桌棋类游戏 从右向左。

    简而言之,您需要复制并粘贴此宏:

    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-stabidifier/

    如果从未向Visual Studio中添加宏,则有一个非常有用的链接“如何” do it .

        7
  •  6
  •   Peter Mortensen icecrime    11 年前

    Visual Studio选项卡顺序的原理非常违反直觉,因为显示的选项卡顺序不同于选项卡切换逻辑,从而呈现选项卡的顺序。 完全没用 .

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

    这样,您也会发现documentwindownav更有用!

        8
  •  5
  •   Hulk1991 moinudin    12 年前

    我完全同意杰夫的意见。

    我已经在Borland C++ + Builder上工作了几年,其中一个我最怀念的特性是“正确的”文档标签顺序。 Ctrl键 - 标签 . 正如杰夫所说:“ 当前的选项卡行为不断将我从任务中拉出来,使我不得不注意该工具 “这正是我对这件事的感受,我对没有多少人对此抱怨感到非常惊讶。

    我想 Ctrl键 - F6 -NextDocumentWindowNav-根据文档上次激活的时间导航文档。这种行为与MDI应用程序过去的行为非常相似。

    考虑到这一点,我通常使用 Ctrl键 + F6 在2个文档之间切换(在处理C++项目时,在CPP和.h文件之间切换非常方便),即使有超过2个当前打开的文档。例如,如果您打开了10个文档(tab1、tab2、tab3、…、tab10),我单击tab1,然后单击tab2。当我这样做的时候 Ctrl键 + F6 松开钥匙,我跳到表1。紧迫的 Ctrl键 + F6 再把我带回到塔布2。

        9
  •  5
  •   chicks adjan    10 年前

    我想您需要VSS调用的下一个(上一个)文档窗口。默认情况下,打开 CTRL(-shift)-F6 在我的VSS 8上。论 ctrl(-shift)-制表符 他们有 Next(Previous)DocumentWindowNav . 您可以通过工具/选项/键盘更改按键分配。

        10
  •  4
  •   riffraff    14 年前

    在注册表分支中: hkey_current_user\software\microsoft\VisualStudio\9.0 添加名为“usemrudocordering”且值为1的双字。 它将订购文档,因此最新使用的文档放在左侧。这并不完美,但比默认的错误行为要好。

        11
  •  4
  •   FlashJordan    10 年前

    CTL + 中高音 + PGUP PGDN 快捷方式为我将下一个/上一个选项卡从框中切换出来…

        12
  •  -5
  •   Peter Mortensen icecrime    11 年前

    我不使用Visual Studio( 是的,真的,我不用它 ) AutoHotkey 可以全局或在特定应用程序中重新映射任何热键:

    #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
    

    这是我的主要自动热键脚本的两个重新映射。我认为对于这类任务来说,它是一个很好的工具。