Visual Studio: ярлык для прокрутки проводника решений до текущего файла

82

Я не прошу опцию автоматического отслеживания текущего файла в проводнике решений. На этот вопрос был дан ответ, и у меня этот параметр отключен, потому что я ненавижу такое поведение.

Я хотел бы иметь ярлык (или макрос, или ....) для перехода к файлу, который я сейчас редактирую в обозревателе решений.

Лауджин
источник
Возможный дубликат stackoverflow.com/a/55025095/661584 ?
MemeDeveloper

Ответы:

107

В VS 2013 есть встроенное сочетание клавиш (CTRL + \, S)

  1. Нажмите CTRL + обратная косая черта
  2. Отпустите обе клавиши
  3. Нажмите клавишу S

Или нажмите кнопку, выделенную на изображении ниже.

Синхронизировать с активным документом

Также есть возможность настроить сочетание клавиш, если вам не нравится комбинация по умолчанию :)

странник
источник
27
Это сочетание клавиш называется SolutionExplorer.SyncWithActiveDocument(Инструменты -> Параметры -> Среда -> Клавиатура)
Лауджин
27
Ярлык по умолчанию - Ctrl + [, S в моем VS.
Roman O
CTRL + обратная косая черта для меня не сработала, см. Stackoverflow.com/a/37158527/2874896
Джим Ахо
Возможно, вы захотите деактивировать Track Active Item in Solution Explorerпервый, поэтому синхронизация проводника решений будет происходить только при нажатии этого ярлыка, а не «прыгать» при переключении файлов кода.
phifi
Потрясающе. отличная помощь :)
себастьян
71

В Visual Studio 2015, 2017 и 2019 вы можете нажать Ctrl+, [а затем s.

Это выделит файл, редактируемый в настоящее время в обозревателе решений.

Это можно настроить с помощью следующей команды клавиатуры: SolutionExplorer.SyncWithActiveDocument

Чтобы перенастроить, перейдите в Инструменты -> Параметры -> Среда -> Клавиатура.

Адриан Томпсон Филлипс
источник
11
В Visual Studio 2015 с помощью ReSharper я могу нажать «Shift» + «Alt» + «L», чтобы выделить текущий файл, редактируемый в обозревателе решений.
Джереми Паскали
В Visual Studio 2013 с обновлением 5 это тоже правильная комбинация.
FrankyHollywood
@JeremyPaskali Большое спасибо за это. Поскольку я использую resharper, это более простой способ для меня :).
C4d,
1
@JeremyPaskali - Можете ли вы добавить свой комментарий в качестве ответа? Я также использую ReSharper, и эта комбинация клавиш была единственной, которая у меня сработала.
Филип Питтл
1
Для тех, кто хочет переназначить ярлык на что-то другое, в 2019 году команда называется «SolutionExplorer.SyncWithActiveDocument».
Garrison Becker
27

Насколько я знаю, до VS 2012 такой опции не было.

В VS 2012 была представлена ​​опция «Синхронизировать с активным документом». Вы можете найти описание и экран в этом блоге (прокрутите до «Синхронизировать с активным документом» в середине страницы).

псур
источник
1
Это должно быть отмечено как правильный ответ, поскольку он точно отвечает на вопрос.
Умар Фарук Хаваджа
20
Сейчас мы используем Resharper. У него есть особенность делать именно это. Ярлык по умолчанию: Shift + Alt + L
Laoujin 05
1
Спасибо за команду Resharper, я тоже искал это.
bastijn
2
Это определенно ответ и не требует сторонних инструментов, таких как ReSharper. Ctrl + '[' затем 's' Или: нажмите 'Ctrl' и левую квадратную скобку, затем 's'
Энтони Бут
6

Чтобы найти файл, который вы в настоящее время редактируете в обозревателе решений:

Ctrl + W + S

Раньше использовал Shift + Alt + L, но почему-то уже не работает.

Другие предложения ( Ctrl+\,Sи Ctrl+[,SCtrl + `+ S) не работают для меня в VS2015. Я не использую resharper и не люблю использовать макросы, когда доступны простые ярлыки.

Spyder
источник
Это единственное, что у меня работало в VS 2017, спасибо.
Фелипе Коста Гуальберто
5

В Visual Studio 2015 с помощью ReSharper я могу нажать Shift+ Alt+, Lчтобы выделить текущий файл, редактируемый в обозревателе решений.

Джереми Паскали
источник
Я также использую ReSharper, и это была единственная комбинация клавиш, которая у меня сработала. Может быть, ReSharper отменяет настройки VS по умолчанию?
Филип Питтл,
Знаете ли вы, как называется клавиатурная команда, в которой можно настроить этот ярлык?
Ciaran Gallagher
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

Первоисточник здесь

Приятель
источник
3

В Visual Studio 2010/2012 вы можете использовать это расширение ( ссылка ). Он добавляет возможность синхронизации на панели инструментов обозревателя решений и в контекстном меню кода.

пользователь503386
источник
"ссылка" открывает эту же страницу XD
Mate
Он показывает новый пункт меню «Найти в обозревателе решений» в контекстном меню, когда вы щелкаете правой кнопкой мыши вкладку нашего документа. это меню расположено между пунктами меню «Копировать полный путь» и «Открыть содержащую папку».
С.Серпушан 09
0

На клавиатуре мне пришлось нажать:

Ctrl + ` + S

Обратите внимание, что знак посередине - это клавиша слева от backspace.

Используя Visual Studio 2015.

Джим Ахо
источник
Возможно, вы скажете, какой макет используете. Тем не менее, информация, где находится ключ, может оказаться полезной.
bugybunny
0

Если я правильно понял ваш вопрос, вы можете перейти в Инструменты -> Параметры -> Проекты и решения -> Общие и установить флажок «Отслеживать активный элемент в обозревателе решений».

Amirdaraee
источник