ソリューションエクスプローラーで現在のファイルを自動的に追跡するオプションを求めていません。これはこの質問で回答されており、動作が嫌いなため、このオプションをオフにしています。
ソリューションエクスプローラーで現在編集しているファイルにジャンプするためのショートカット(またはマクロ、または....)が欲しいのですが。
回答:
VS 2013には、組み込みのキーボードショートカット(CTRL + \、S)があります。
または、下の画像で強調表示されているボタンをクリックします。
デフォルトの組み合わせが気に入らない場合は、キーボードショートカットをカスタマイズするオプションもあります:)
SolutionExplorer.SyncWithActiveDocument
([ツール]-> [オプション]-> [環境]-> [キーボード])と呼ばれます
Track Active Item in Solution Explorer
最初の機能を無効にすることをお勧めします。そのため、同期ソリューションエクスプローラーは、コードファイルをスウィッチするときに「ジャンプ」するのではなく、このショートカットを押したときにのみ発生します。
Visual Studio 2015、2017、および2019では、Ctrl+[を押してからを押すことができますs。
これにより、ソリューションエクスプローラーで現在編集されているファイルが強調表示されます。
これは、次のキーボードコマンドを使用して構成できます:SolutionExplorer.SyncWithActiveDocument
再構成するには、[ツール]-> [オプション]-> [環境]-> [キーボード]に移動します
私の知る限り、VS2012以前にはそのようなオプションはありません。
VS 2012では、「アクティブドキュメントと同期」オプションが導入されました。説明と画面はこのブログにあります(ページ中央の「アクティブドキュメントと同期」までスクロールしてください)。
ソリューションエクスプローラーで現在編集しているファイルを見つけるには:
Ctrl + W + S
以前使用Shift + Alt + L
していましたが、何らかの理由で機能しなくなりました。
他の提案(Ctrl+\,S
およびCtrl+[,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
そして、あなたがここで見つけることができるショートカットの完全なリスト:
私のキーボードで私は押さなければなりませんでした:
Ctrl + ` + S
中央の記号は、バックスペースのすぐ左にあるキーであることに注意してください。
Visual Studio2015を使用します。
質問が正しければ、[ツール]-> [オプション]-> [プロジェクトとソリューション]-> [一般]に移動し、[ソリューションエクスプローラーでアクティブアイテムを追跡する]オプションをオンにします。