是否可以更改 Ctrl + Tab 和 Shift + Ctrl + Tab <的方式/ kbd>在Visual Studio中工作?我已禁用弹出窗口导航器窗口,因为我只想在选项卡控件中切换项目。我的问题是切换到下一个和上一个文档的内容不一致。
我使用过打开文档的标签控件的其他程序使用 Ctrl + Tab 从左向右移动 Shift + Ctrl + Tab 从右到左。 Visual Studio通过跳转到选定的最后一个选项卡来中断此操作。你永远不会知道你最终会得到什么文件,它永远不会是两次相同的方式。
这是违反直觉的。这是一种微妙的方式来鼓励每个人一次只打开两份文件吗?
假设我打开了一些文件。我在一个工作,我需要看到右边下一个选项卡中的内容。在地球表面上的每一个单独的应用程序中, Ctrl + Tab 都会让我在那里。但是在Visual Studio中,我不知道它将采用哪些其他选项卡。如果我只打开两个文档,这很有效。一旦你去了三个或更多,所有的赌注都是关于Visual Studio决定发送给你的标签。
这个问题是我不应该考虑这个工具,它应该淡入背景,我应该考虑这个任务。当前的标签行为一直让我脱离任务,让我不得不关注这个工具。
答案 0 :(得分:211)
在Visual Studio 2015中(以及VS的早期版本,但如果您使用的是VS2013或更低版本,则必须安装Productivity Power Tools),Visual Studio中有两个新命令:
Window.NextTab 和 Window.PreviousTab
只需将其重新映射到 Ctrl + Alt + PageUp / Ctrl + Alt + PageDown 到 Ctrl + Tab / Ctrl + Shift + 标签 in:
菜单工具 - &gt; 选项 - &gt; 环境 - &gt; 键盘
注意:在早期版本(如Visual Studio 2010)中,Window.NextTab和Window.PreviousTab被命名为 Window.NextDocumentWellTab , Window.PreviousDocumentWellTab
答案 1 :(得分:69)
Visual Studio 2010内置了解决此问题的方法。
默认情况下, Ctrl + Tab 和 Ctrl + Shift + Tab 被分配到Window.[Previous/Next]..Document
,但您可以通过
Tools -> Options -> Environment -> Keyboard,
删除这些键分配并将其重新分配给Window.[Next/Previous]Tab
以添加所需的行为。
答案 2 :(得分: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)现在对Previous
快捷方式重复1-5(最好添加 Shift )。
7)奖励:选择VS2005映射方案(位于同一个框的顶部),现在为重命名成员获得 F2 而不是 CTRL < / kbd> + R + R 和
我认为VS默认情况下是正确的。我发现VS记得我最后使用的内容非常有用,并且使切换更容易,就像操作系统本身所做的那样(在 ALT + TAB )。默认情况下我的浏览器也会这样做(Opera),但我知道Firefox的行为方式不同。
答案 3 :(得分:16)
在Visual Studio 2012或更高版本(2013,2015,2017 ......)中:
答案 4 :(得分:8)
导航到博客帖子 Visual Studio Tab Un-stupidifier Macro 并使用该宏。将宏应用于Visual Studio安装后,您可以将喜爱的键盘快捷键绑定到它们。另请注意注释中的注册表修复程序没有显示宏气球,因为它们可能会在一段时间后变得烦人。
答案 5 :(得分:7)
经过几个小时的搜索,我找到了一个解决方案,如何使用 CTRL + TAB 在左侧之间移动 SHIFT < / kbd> + 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添加宏,那么有一个非常有用的链接如何do it。
答案 6 :(得分:6)
Visual Studio选项卡顺序的原理非常违反直觉,因为显示的选项卡的顺序与选项卡切换逻辑不同,导致选项卡的排序完全无用。
因此,在出现更好的解决方案之前,将窗口布局(在Environment-&gt; General中)从选项卡式文档更改为多个文档;它不会改变行为,但它减少了标签引起的混乱。
这样你也会发现DocumentWindowNav更有用!
答案 7 :(得分:6)
Ctl + Alt + PgUp 或 PgDn 快捷方式可以切换下一个/ prev选项卡开箱即用对我来说......
答案 8 :(得分:5)
我想你想要VSS调用Next(Previous)DocumentWindow。默认情况下,它位于我的VSS 8上的 Ctrl(-Shift)-F6 上。在 Ctrl(-Shift)-Tab 上,它们有Next(Previous)DocumentWindowNav
。您可以通过工具/选项/键盘更改键分配。
答案 9 :(得分:5)
我100%与杰夫达成协议。
我在Borland C ++ Builder上工作了好几年,其中一个我最想念的功能是使用 Ctrl - Tab 的'正确'文档制表顺序。正如杰夫所说,“当前的标签行为让我不能完成任务并让我不得不关注工具”正是我对此的看法,我对此感到非常惊讶事实上,没有多少人抱怨这一点。
我认为 Ctrl - F6 - NextDocumentWindowNav - 根据文档的上次激活时间导航文档。这种行为很像MDI应用程序过去的行为方式。
考虑到这一点,我通常使用 Ctrl + F6 来切换2个文件(这在.cpp和.h文件之间切换时非常方便即使有超过2个当前打开的文档,也在处理c ++项目)。例如,如果您打开了10个文档(Tab1,Tab2,Tab3,....,Tab10),我单击Tab1然后单击Tab2。当我执行 Ctrl + F6 并释放键时,我将跳转到Tab1。再次按 Ctrl + F6 将带我回到Tab2。
答案 10 :(得分:4)
在注册表分支中: HKEY_CURRENT_USER \软件\微软\ VisualStudio的\ 9.0 添加名为“UseMRUDocOrdering”的DWORD,值为1。 它将订购文件,因此最近使用的文件放在左侧。它并不完美,但比默认的不当行为更好。
答案 11 :(得分:0)
已更新至VS 2017+,根据@thepaulpage回答下的@J-Bob's comment,(强调):
看起来命令已再次更改。现在是2017年,键盘快捷键称为打开下一个编辑器和打开上一个编辑器。您不需要任何扩展。
您可以在“设置”下找到选项,可以通过左下方的齿轮符号或通过[Ctrl]+,
命令来访问这些选项。
答案 12 :(得分:0)
我觉得目前的最佳答案已过时。在 Visual Studio 2021 (v1.56) 中,您无需安装任何扩展或处理任何配置文件。您只需执行以下步骤:
如果您确实更改为“Ctrl+tab”或其他命令已在使用的任何其他快捷方式,它会通知您并为您提供更改这些选项的选项。我个人将它们更改为“Ctrl+PgUp”和“Ctrl+PgDn”,因此这只是直接交换。
答案 13 :(得分:-5)
我不使用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脚本的两个重映射。我认为这是完成此类任务的绝佳工具。