是否有可能改变Ctrl+ Tab和Shift+ Ctrl+ Tab在Visual Studio中的工作方式?我已禁用弹出窗口导航器窗口,因为我只想在选项卡控件中切换项目.我的问题是切换到下一个和上一个文档的不一致.
使用选项卡控件打开文档的其他每个程序我都看到使用Ctrl+ Tab从左到右移动,Shift+ Ctrl+ Tab从右到左移动.Visual Studio通过跳转到选定的最后一个选项卡来中断此操作.你永远不会知道你最终会得到什么文件,它永远不会是两次相同的方式.
这非常违反直觉.这是一种微妙的方式来鼓励每个人一次只打开两份文件吗?
假设我打开了一些文件.我在一个工作,我需要看到右边下一个选项卡中的内容.在地球表面的每一个单独的应用程序中,Ctrl+ Tab都会让我在那里.但是在Visual Studio中,我不知道它将采用哪些其他选项卡.如果我只打开两个文档,这很有效.一旦你去了三个或更多,所有的赌注都是关于Visual Studio决定发送给你的标签.
这个问题是我不应该考虑这个工具,它应该淡入背景,我应该考虑这个任务.当前的选项卡行为使我不能完成任务,并且必须注意该工具.
在Visual Studio 2015(以及VS的早期版本中,但如果您使用的是VS2013或更低版本,则必须安装Productivity Power Tools),Visual Studio中有两个新命令:
Window.NextTab和 Window.PreviousTab
只需将它们从Ctrl+ Alt+ PageUp/ Ctrl+ Alt+ 重新映射PageDown到Ctrl+ Tab/ Ctrl+ Shift+ Tab:
菜单工具 - > 选项 - > 环境 - > 键盘
注意:在早期版本(如Visual Studio 2010)中,Window.NextTab和Window.PreviousTab分别命名为Window.NextDocumentWellTab和 Window.PreviousDocumentWellTab.
Visual Studio 2010内置了一种解决方案.
默认情况下,分配Ctrl+ Tab和Ctrl+ Shift+ ,但您可以通过TabWindow.[Previous/Next]..Document
Tools -> Options -> Environment -> Keyboard,
删除这些键分配并重新分配它们Window.[Next/Previous]Tab
以添加所需的行为.
它可以改变,至少在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的行为方式不同.
在Visual Studio 2012或更高版本(2013,2015,2017 ...)中:
浏览菜单工具/选项/环境/键盘.
搜索命令'Window.NextTab',将快捷方式设置为Ctrl+Tab
搜索命令'Window.PreviousTab',将快捷方式设置为Ctrl+ Shift+Tab
导航到博客文章Visual Studio Tab Un-stupidifier Macro并使用宏.将宏应用于Visual Studio安装后,您可以将喜爱的键盘快捷键绑定到它们.另请注意注释中的注册表修复不显示宏气球,因为它们可能会在一段时间后变得烦人.
经过几个小时的搜索,我找到了一个解决方案,如何使用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选项卡顺序的原理非常违反直觉,因为显示的选项卡的顺序与选项卡切换逻辑不同,使选项卡的顺序完全无用.
因此,在出现更好的解决方案之前,将窗口布局(在Environment-> General中)从选项卡式文档更改为多个文档; 它不会改变行为,但它减少了标签引起的混乱.
这样你也会发现DocumentWindowNav更有用!
Ctl+ Alt+ PgUp或PgDn快捷方式可以为我切换下一个/ prev选项卡开箱即用...
我猜你想要什么VSS调用Next(Previous)DocumentWindow.默认情况下,它Ctrl(-Shift)-F6在我的VSS 8上.Ctrl(-Shift)-Tab他们有Next(Previous)DocumentWindowNav
.您可以通过工具/选项/键盘更改键分配.
我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.