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

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

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

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


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

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

84956 次浏览

我不使用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

这是我的主要AutoHotKey脚本的两个重绘。我认为这是完成这类任务的绝佳工具。

我猜你想要什么VSS称为下(上)文档窗口。默认情况下,它在我的VSS 8的Ctrl f6(转变)上。在Ctrl(转变)选项卡上有Next(Previous)DocumentWindowNav。你可以通过工具/选项/键盘改变键值。

Visual Studio选项卡顺序的哲学是非常违反直觉的,因为显示选项卡的顺序与选项卡切换逻辑不同,呈现选项卡的顺序完全无用的

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

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

我完全同意杰夫的意见。

我已经在Borland c++ Builder上工作了几年,我最怀念的功能之一是使用Ctrl-选项卡的“正确”文档标签顺序。正如杰夫所说,“当前的标签行为不断把我从任务中拉出来,使我不得不关注这个工具”正是我对此的感受,我非常惊讶的是,没有很多人抱怨这一点。

我认为Ctrl- __abc1 - NextDocumentWindowNav -根据文档的最后激活时间导航文档。这种行为很像过去MDI应用程序的行为。

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

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

经过几个小时的搜索,我找到了一个解决方案,如何使用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-stupidifier/

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

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

< p > 窗口。NextTab窗口。PreviousTab < / em >

只需将它们从Ctrl+Alt+上页/Ctrl+Alt+下页重新映射到Ctrl+选项卡/Ctrl+转变+选项卡:

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

注:在早期版本,如Visual Studio 2010, Window。NextTab和Window。PreviousTab被命名为窗口。NextDocumentWellTabWindow.PreviousDocumentWellTab < / em >。

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

Visual Studio 2010已经内置了解决这个问题的方法。

默认情况下,Ctrl+选项卡Ctrl+转变+选项卡被分配给Window.[Previous/Next]..Document,但是你可以通过

Tools -> Options -> Environment -> Keyboard,

删除这些键赋值并将它们重新赋值给Window.[Next/Previous]Tab以添加所需的行为。

它是可以改变的,至少在VS 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)现在对Previous快捷方式也重复1-5(最好添加转变)。

7)奖励:选择VS2005映射方案(在同一框的顶部),所以现在你得到F2重命名成员,而不是CTRL+R+R,和F7视图代码,而不是CTRL+ALT+0

我认为VS在默认情况下是正确的。我发现它非常有用,VS记得我最后使用什么,并使切换更容易,就像操作系统本身所做的那样(在ALT+TAB)。我的浏览器默认也是这样(Opera),尽管我知道Firefox的表现不同。

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

  1. 浏览菜单工具/选项/环境/键盘。
  2. 搜索命令“窗口”。NextTab',设置快捷方式为Ctrl+选项卡
  3. 搜索命令“窗口”。PreviousTab',将快捷方式设置为Ctrl+转变+选项卡

enter image description here

细胞毒性t淋巴细胞 + Alt + PgUpPgDn快捷键为我切换下一个/上一个选项卡…

更新到VS 2017+,其中,根据@thepaulpage的答案下的@J-Bob的评论,(强调添加):

看来命令又变了。现在是2017年,键盘快捷键被称为打开下一个编辑器打开先前编辑器。你不需要任何扩展。

你可以在设置下找到选项,可以通过左下角的齿轮符号或[Ctrl]+,命令访问。

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

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

如果您更改了“Ctrl+tab”或其他已被其他命令使用的快捷方式,它会让您知道并为您提供更改这些快捷方式的选项。我个人把它们改成了“Ctrl+PgUp”和“Ctrl+PgDn”,所以这只是一个直接的交换。