更改Ctrl + Tab行为以在Visual Studio中的文档之间移动
是否可以更改Visual Studio中的Ctrl + Tab和Shift + Ctrl + Tab的工作方式?我已经禁用了弹出式导航器窗口,因为我只想在选项卡控件中的项目之间进行切换。我的问题是切换到下一个和上一个文档的操作不一致。
我见过的所有其他使用制表符控件打开文件的程序都使用Ctrl + Tab从左向右移动,而Shift + Ctrl + Tab从右向左移动。 Visual Studio通过跳转到最后一个选择的选项卡打破了这一点。我们永远不会知道最终将要处理的文档,而且两次也不会以相同的方式进行。
这是非常违反直觉的。这是一种鼓励所有人一次只能打开两个文档的巧妙方法吗?
假设我打开了一些文件。我正在一起工作,我需要查看右侧下一个选项卡中的内容。在地球表面上的所有其他单个应用程序中,Ctrl + Tab可以将我带到那里。但是在Visual Studio中,我不知道它将带我去哪个其他选项卡。如果我只打开过两个文档,那么效果很好。一旦我们转到三个或者三个以上,就无法确定Visual Studio已决定将我们发送到哪个选项卡。
这样做的问题是,我不必考虑该工具,它应该淡出背景,并且我应该考虑该任务。当前选项卡的行为不断使我退出任务,并使我不得不注意该工具。
解决方案
回答
我不使用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调用Next(Previous)DocumentWindow。默认情况下,它位于我的VSS 8上的<KBD> Ctrl(-Shift)-F6上。在<KBD> Ctrl(-Shift)-Tab上,它们具有" Next(Previous)DocumentWindowNav"。我们可以通过"工具/选项/键盘"更改键分配。
回答
Visual Studio选项卡顺序的原理非常违反直觉,因为显示的选项卡的顺序与选项卡切换逻辑不同,从而使选项卡的顺序完全无用。
因此,在出现更好的解决方案之前,将窗口布局(在Environment-> General中)从选项卡式文档更改为多文档;它不会改变行为,但是可以减少标签引起的混乱。
这样,我们还将发现DocumentWindowNav更有用!
回答
我100%同意杰夫。
我已经在Borland C ++ Builder上工作了几年,而我最想念的功能之一是使用Ctrl-Tab的"正确"文档制表顺序。正如Jeff所说:"当前的标签行为将我从任务中拉出来,使我不得不注意该工具",这正是我对此的看法,对于没有许多人对此表示抱怨。
我认为Ctrl-F6 NextDocumentWindowNav根据文档的上次激活时间来浏览文档。这种行为很像以前的MDI应用程序的行为。
考虑到这一点,我通常使用Ctrl + F6在2个文档之间切换(在处理c ++项目时,在.cpp和.h文件之间切换非常方便),即使当前有两个以上文档打开的文件。例如,如果我们有10个文档(Tab1,Tab2,Tab3,....,Tab10)打开,则我单击Tab1,然后单击Tab2. 当我执行Ctrl + F6并释放键时,我将跳到Tab1. 再按一次Ctrl + F6将带我回到Tab2.
回答
导航到博客文章" Visual Studio选项卡非stupidifier宏"并使用该宏。将宏应用于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 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。