是否可以更改 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+Tab 分配给Window.[Previous/Next]..Document
,但您可以通过
Tools -> Options -> Environment -> Keyboard,
删除这些键分配并将它们重新分配给 Window.[Next/Previous]Tab
以添加所需的行为。
Window.[Previous|Next]DocumentWindow
设置中删除绑定才能使其正常工作(在 VS2015 中)。默认情况下,它有一个单独的文本编辑器绑定,似乎具有优先权。
它可以改变,至少在 VS 2012 中(我认为它也应该适用于 2010 年)。
1) TOOLS > Options > Environment > Keyboard
(是的工具,它的 VS2012 !)现在要检查三个快捷方式。
2) Window.NextDocumentWindow
- 您可以通过在顶部的搜索窗格中输入来快速到达那里。现在这是你的敌人。如果您不喜欢它,请删除它。如果想拥有自己的,请将其更改为其他内容(不要忘记分配按钮),但无论最后要记住那个快捷方式。以后会派上用场的。
(我的意思是这是记住你最后一个标签的快捷方式)
https://i.stack.imgur.com/GYO0E.png
3) 现在寻找 Window.NextDocumentWindowNav
- 这与上面相同,但显示打开的选项卡的预览(您可以使用此弹出窗口快速导航到其他窗口)。我从来没有发现这有帮助。执行第 2 步中提到的所有操作(不要忘记记住)。
4) Window.NextTab
- 你的魔法药水。这将让您以正向顺序循环浏览选项卡。你可能想要 CTRL+TAB 吗?再次执行第 2 步并记住。
5) 现在将光标放在 Press shortcut keys: 文本框中(不管当前选择了什么,这次你不会分配),然后键入三个(或两个或一个)快捷方式中的第一个。
https://i.stack.imgur.com/PRiW9.png
您将看到当前使用的快捷方式:列出。确保快捷方式没有重复条目。在图片中,没有重复的条目。如果您有(很少见),请说 X,然后转到 X,然后删除快捷方式。对其他快捷方式也重复此步骤。
6) 现在对 Previous
快捷键也重复 1-5(最好添加 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
https://i.stack.imgur.com/8WKmE.png
导航至博文 Visual Studio Tab Un-stupidifier Macro 并使用宏。将宏应用到 Visual Studio 安装后,您可以将最喜欢的键盘快捷键绑定到它们。还要注意评论中的注册表修复,因为它们不显示宏气球,因为它们可能会在一段时间后变得烦人。
Window.NextTab
和 Window.PreviousTab
以在“下一个 Visual Studio 版本”中为文档提供非 MRU 切换。
Ctl + Alt + PgUp 或 PgDn 快捷键可以为我切换下一个/上一个选项卡开箱即用...
经过几个小时的搜索,我找到了一个解决方案,如何使用从左向右移动的 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 添加宏,则有一个非常有用的链接如何do it。
Visual Studio 选项卡顺序的理念非常违反直觉,因为显示选项卡的顺序与选项卡切换逻辑不同,从而使选项卡的顺序完全无用。
因此,在出现更好的解决方案之前,将窗口布局(在 Environment->General 中)从选项卡式文档更改为多文档;它不会改变行为,但它减少了标签引起的混乱。
这样你也会发现 DocumentWindowNav 更有用!
我 100% 同意杰夫的观点。
我在 Borland C++ Builder 上工作了几年,我最怀念的功能之一是使用 Ctrl-Tab 的“正确”文档选项卡顺序。正如 Jeff 所说,“当前的选项卡行为不断将我从任务中拉出来,让我不得不关注该工具”这正是我对此的感受,我对没有的事实感到非常惊讶很多人抱怨这个。
我认为 Ctrl-F6 - NextDocumentWindowNav - 根据文档的上次激活时间导航文档。这种行为很像过去 MDI 应用程序的行为方式。
考虑到这一点,我通常使用 Ctrl+F6 在 2 个文档之间切换(在处理 c++ 项目时在 .cpp 和 .h 文件之间切换非常方便),即使当前打开的文档超过 2 个。例如,如果您打开了 10 个文档(Tab1、Tab2、Tab3、......、Tab10),我单击 Tab1,然后单击 Tab2。当我执行 Ctrl+F6 并释放键时,我将跳转到 Tab1。再次按 Ctrl+F6 将带我回到 Tab2。
我猜你想要 VSS 调用的 Next(Previous)DocumentWindow。默认情况下,它在我的 VSS 8 上的 Ctrl(-Shift)-F6 上。在 Ctrl(-Shift)-Tab 上,它们有 Next(Previous)DocumentWindowNav
。您可以通过工具/选项/键盘更改键分配。
在注册表分支:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0 添加名为“UseMRUDocOrdering”的 DWORD,值为 1。它将排序文档,因此最近使用的文档放在左侧。它并不完美,但比默认的不当行为要好。
更新到 VS 2017+,其中,根据@thepaulpage 的回答下的@J-Bob's comment,(强调添加):
看起来命令又变了。现在是 2017 年,键盘快捷键称为“打开下一个编辑器”和“打开上一个编辑器”。您不需要任何扩展。
您可以在设置下找到选项,可以通过左下角的齿轮符号或 [Ctrl]+,
命令访问。
我觉得目前的最佳答案已经过时了。在 Visual Studio 2021 (v1.56) 中,您无需安装任何扩展或弄乱任何配置文件。您只需要执行以下步骤:
点击左下角的齿轮图标。选择“键盘快捷键”。搜索“workbench.action.previousEditor”和“workbench.action.nextEditor”并通过单击行左侧的铅笔图标来编辑它们的键绑定。
如果您确实更改为“Ctrl+tab”或其他命令已在使用的任何其他快捷方式,它会通知您并为您提供更改这些选项的选项。我个人将它们更改为“Ctrl+PgUp”和“Ctrl+PgDn”,所以这只是直接交换。
我不使用 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 脚本的两个重新映射。我认为这是完成此类任务的绝佳工具。
不定期副业成功案例分享