繁体   English   中英

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

[英]Visual Studio: Shortcut to scroll solution explorer to current file

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

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

在 VS 2013 中有一个内置的键盘快捷键CTRL + \\S

  1. CTRL + 反斜杠
  2. 松开两个键
  3. S

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

与活动文档同步

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

在 Visual Studio 2015、2017 和 2019 中,您可以按Ctrl + [然后按s

这将突出显示当前在解决方案资源管理器中编辑的文件。

这可以通过以下键盘命令进行配置: SolutionExplorer.SyncWithActiveDocument

要重新配置,请导航到工具 -> 选项 -> 环境 -> 键盘

据我所知,在 VS 2012 之前没有这样的选择。

在 VS 2012 中引入了“与活动文档同步”选项。 您可以在此博客上找到说明和屏幕(滚动到页面中间的“与活动文档同步”)。

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

Ctrl + W + S

我以前使用过Shift + Alt + L ,但由于某种原因,这不再有效。

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

在 Visual Studio 2015 中,使用 ReSharper,我可以按Shift + Alt + L突出显示在解决方案资源管理器中正在编辑的当前文件。

对于 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

原始来源在这里

在 Visual Studio 2010/2012 中,您可以使用此扩展( 链接)。 它添加了在解决方案资源管理器工具栏和代码上下文菜单上同步的选项。

对于 VS 2017,默认配置是:

CTRL + [,S

您可以在此处找到完整的快捷方式列表:

http://visualstudioshortcuts.com/2017/

如果我的问题是正确的,您可以转到工具 -> 选项 -> 项目和解决方案 -> 常规并选中“在解决方案资源管理器中跟踪活动项目”选项。

在我的键盘上,我不得不按:

Ctrl + ` + S

请注意,中间的符号是退格键左侧的键。

使用 Visual Studio 2015。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM