Visual Studio:快捷键将解决方案资源管理器滚动到当前文件位置

101

我不是在请求自动关注解决方案资源管理器中当前文件的选项。这个问题已经在这个问题中得到了回答,并且我已经关闭了此选项,因为我讨厌这种行为。

我想要一个快捷方式(或宏、或……)跳转到我当前正在编辑的文件在解决方案资源管理器中的位置。


1
可能是重复的 https://dev59.com/FG025IYBdhLWcg3wEhhb#55025095? - MemeDeveloper
11个回答

120

在VS 2013中有一个内置的键盘快捷方式 (CTRL+\, S)

  1. 按下CTRL+反斜杠键
  2. 同时释放两个键
  3. 按下S

或点击下图中突出显示的按钮。

与活动文档同步

如果您不喜欢默认组合,还可以自定义键盘快捷方式 :)


31
这个键盘快捷键被称为“SolutionExplorer.SyncWithActiveDocument”(工具 -> 选项 -> 环境 -> 键盘)。 - Laoujin
32
默认快捷键是在我的 VS 中使用 Ctrl+[,S。 - Roman O
实际上,CTRL+反斜杠对我来说不起作用,参见:https://dev59.com/1mUp5IYBdhLWcg3w8K94#37158527 - Jim Aho
1
您可能需要先停用“在解决方案资源管理器中跟踪活动项”功能,这样同步解决方案资源管理器将仅在按下此快捷键时发生,而不是在切换代码文件时“跳来跳去”。 - phifi
真棒。非常感谢 :) - sebastian

92
在Visual Studio 2015、2017、2019和2022中,您可以按Ctrl + [,然后再按s键。这会在解决方案资源管理器中突出显示当前正在编辑的文件。可以通过以下键盘命令进行配置:SolutionExplorer.SyncWithActiveDocument。要重新配置,请导航到工具->选项->环境->键盘。

14
在Visual Studio 2015中,使用ReSharper,我可以按下“Shift” + “Alt” + “L”来突出显示正在Solution Explorer中编辑的当前文件。 - Jeremy Paskali
同样适用于2017RC。 - stej
1
@JeremyPaskali - 你能把你的评论添加为答案吗?我也在使用ReSharper,这个组合键是唯一有效的。 - Philip Pittle
@PhilipPittle,我已经将我的评论添加为答案了。谢谢你让我这么做。 - Jeremy Paskali
1
对于那些想要将快捷键映射到其他功能的人来说,在2019年,该命令被称为“SolutionExplorer.SyncWithActiveDocument”。 - Garrison Becker
显示剩余4条评论

29
据我所知,在VS 2012之前没有这样的选项。
在VS 2012中,引入了“与活动文档同步”选项。您可以在此博客上找到描述和屏幕截图(在页面中部滚动到“与活动文档同步”)。

1
这应该被标记为正确答案,因为它精确地回答了问题。 - Umar Farooq Khawaja
20
现在我们正在使用Resharper。它有一个功能可以做到这一点。默认快捷键:Shift+Alt+L。 - Laoujin
1
谢谢Resharper命令,我也在寻找它。 - bastijn
2
这绝对是答案,不需要像 ReSharper 这样的第三方工具。Ctrl + ' [ ' 然后 's' 或者:按下 'Ctrl' 和左方括号,然后按 's'。 - Antony Booth

6

在使用Visual Studio 2015和ReSharper时,我可以按下Shift + Alt + L来在“解决方案资源管理器”中高亮显示当前正在编辑的文件。


我也在使用ReSharper,这是唯一有效的键盘组合。或许是ReSharper覆盖了VS的默认设置? - Philip Pittle
你知道可以在哪个键盘命令中配置这个快捷方式的名称吗? - Ciaran Gallagher

6

要在“解决方案资源管理器”中找到您当前正在编辑的文件:

Ctrl + W + S

我曾经使用 Shift + Alt + L,但由于某种原因它现在不再起作用。

其他建议(Ctrl+\,SCtrl+[,S 和 Ctrl + ` + S)在VS2015中对我无效。我不使用resharper,并且不喜欢在简单的快捷方式可用时使用宏。


这是在VS 2017中对我起作用的唯一方法,谢谢。 - Felipe Costa Gualberto

3

对于VS2010,我找到了这个宏,并且适用于我:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90

Public Module Utilities
    Public Sub TrackProjectItem()
        Dim solution As Solution2 = DTE.Solution
        If Not solution.IsOpen OrElse DTE.ActiveDocument Is Nothing Then Return

        solution.FindProjectItem(DTE.ActiveDocument.FullName).ExpandView()

        Dim FileName As String = DTE.ActiveDocument.FullName

        Dim SolutionExplorerPath As String
        Dim items As EnvDTE.UIHierarchyItems = DTE.ToolWindows.SolutionExplorer.UIHierarchyItems
        Dim item As Object = FindItem(items, FileName, SolutionExplorerPath)

        If item Is Nothing Then
            MsgBox("Couldn't find the item in Solution Explorer.")
            Return
        End If

        DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
        DTE.ActiveWindow.Object.GetItem(SolutionExplorerPath).Select(vsUISelectionType.vsUISelectionTypeSelect)
    End Sub

    Public Function FindItem(ByVal Children As UIHierarchyItems, ByVal FileName As String, ByRef SolutionExplorerPath As String) As Object
        For Each CurrentItem As UIHierarchyItem In Children
            Dim TypeName As String = Microsoft.VisualBasic.Information.TypeName(CurrentItem.Object)
            If TypeName = "ProjectItem" Then
                Dim projectitem As EnvDTE.ProjectItem = CType(CurrentItem.Object, EnvDTE.ProjectItem)
                Dim i As Integer = 1
                While i <= projectitem.FileCount
                    If projectitem.FileNames(i) = FileName Then
                        SolutionExplorerPath = CurrentItem.Name
                        Return CurrentItem
                    End If
                    i = i + 1
                End While
            End If

            Dim ChildItem As UIHierarchyItem = FindItem(CurrentItem.UIHierarchyItems, FileName, SolutionExplorerPath)
            If Not ChildItem Is Nothing Then
                SolutionExplorerPath = CurrentItem.Name + "\" + SolutionExplorerPath
                Return ChildItem
            End If
        Next
    End Function
End Module

Original Source here


3

3

在Visual Studio 2010/2012中,您可以使用此扩展程序 (链接)。 它添加了在Solution Explorer工具栏和代码上下文菜单中同步的选项。


“link”打开的是同一页XD。 - Mate
当您右键单击我们的文档选项卡时,它会显示一个名为“在解决方案资源管理器中查找”的新菜单项。该菜单项位于“复制完整路径”和“打开包含文件夹”菜单项之间。 - S.Serpooshan

2
如果我理解你的问题正确,你可以进入“工具” -> “选项” -> “项目和解决方案” -> “常规”,然后勾选“在解决方案资源管理器中跟踪活动项目”选项。

你是个圣人。在 VS 2019 中对我有效。 虽然不是 OP 所问的,但无论如何在这里有很大用处。 - Porter Lyman

0
在我的键盘上我必须按: Ctrl + ` + S 需要注意的是中间的符号是退格键左侧的键。
使用Visual Studio 2015。

1
如果您能说明使用的布局,那会很有帮助。不过,关于按键位置的信息也是有用的。 - bugybunny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接